我仍然无法理解如何复制包含char * fields \ other struct fields的结构:
typedef struct node{
int id;
struct node* parent
char * nodeName;
struct node* nodes[100];
}NODE,*pNODE;
我想使用此功能:pNODE copyNode(pNODE oldNode)
1.我知道首先应该为新的指针数据进行分配,然后执行以下操作:
pNODE newNode = (pNODE)calloc(1,sizeof(NODE));
newNode.id=oldNode.id
//for the string that I want to copy I should allocate and use strcpy - in order not to point at the same string
但是现在我对父节点感到迷茫,我该怎么复制呢?如果我这样做:newNode.parent=oldNode.parent
我指向同一个父对象,如果我改变它的Id例如 - 它将改变newNode和oldNode的id。我怎么才能复制它?没有指向同一个?
以及如何复制指针数组??
答案 0 :(得分:1)
看一下memcopy功能:
memcpy(oldNode.parent, newNode.parent, sizeof(node)).
当然,首先需要使用malloc为newNode的父级分配内存(calloc在这种情况下没有意义 - 它用于数组)
newNode.parent = (NODE*)malloc(sizeof(NODE))
如果要进行深层复制(即不重用引用的对象),则应该检查newNode结构并为结构中包含的每个指针分配内存,然后应用memcopy。