将指针复制到指针并复制结构

标签 c pointers

我有以下结构和定义:

    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 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 的指针。 List 包含一个 ART 和指向下一个 Art 的指针。

希望任何人都可以帮助我创建这个结构。

最佳答案

当您声明第一个 ART 时,您创建了一个 ART 实例。如果要创建多个,则需要 malloc(sizeof(ART)) 获取指向内存的指针以存储另一个实例。

关于将指针复制到指针并复制结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306636/

相关文章:

c++ - 是否可以将 double 数组转换为 char *?

c - 内存寻址和指针练习

c - 将 scanf 值传递给结构指针段错误

c++ - 将指向结构的 void 指针或 memcpy 转换为新结构?

c - NULL 指针与零段错误的比较

c++ - cpp程序中system函数的使用

c - 如何让 OS X malloc 在失败时自动中止?

c - 为什么我的程序不打印指定输入的输出?

调用 cudaMemcpyToSymbol 时出现 cudaErrorInvalidValue 错误

c++ - 使用 `static_cast` 向下转换空指针(单继承或多继承)