2015-10-23 5 views
2

У меня есть следующие структуры и определение:Копирование Указатель на указатель и копирования структуры

typedef struct 
{ 
    int nr; 
    char name[20]; 
} ART; 


typedef struct List 
{ 
    ART Art; /* Daten des Artikels */ 
        // Zeiger auf nächstes Listenelement 
    struct List *next; 
} LIST; 

typedef LIST *pointList; 

pointList pHead = NULL; 

Я создать АРТ-структуру. Затем я хочу создать функцию для создания списка со многими структурами ART.

ART art; 
scanf_s("%d", %art.nr); 
scanf_s("%s", art.name, (int)sizeof(art.name) - 1); 


LIST new; 
new.Art = art; 

if(pHead) 
memcpy(&new.naechstes, &pHead, sizeof(LIST)); //Think its not the right one? 


pointList newList = &new; 


    memcpy(&pHead, &newList, sizeof(LISTENELEMENT)); 

Моя проблема в том, что я не знаю, как скопировать указатель на структуру и изучить ее. memcpy не работает должным образом ... но если я инициализирую переменную с указателем, ее просто указатель и никакая копия.

Таким образом, целью является создание списка предметов искусства, а pHead - указатель первого СПИСОК. И List содержит ARt и указатель на следующий Art.

Надеюсь, кто-нибудь может помочь мне создать эту конструкцию.

+0

Вы пытаетесь создать связанный список? –

+0

Пожалуйста, уберите код. В некоторых местах у вас все еще есть немецкие имена. Вам также необходимо сформировать лучшее понимание указателей и для чего они предназначены. Здесь указатель 'next' _points_ к следующему элементу, он не выполняет _ копию следующего элемента вокруг. Указатели - это только связи между существующими элементами, а не самими элементами. Связанные списки - очень популярная тема. Я предлагаю вам немного перейти к кодированию связанного списка. –

+0

Что именно это = >> scanf_s ("% d",% art.nr) ;? =>% – Michi

ответ

0

Когда вы объявляете первый АРТ, вы делаете ОДИН экземпляр искусства. Если вы хотите создать более одного, вам нужно malloc (sizeof (ART)), чтобы получить указатель на память для хранения другого экземпляра.

Смежные вопросы