-3

我仍然无法理解如何复制包含 char* 字段\其他结构字段的结构:

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。怎么复制??没有指向同一个?以及如何复制指针数组?

谢谢你!

4

1 回答 1

2

看一下 memcopy 函数:

memcpy(oldNode.parent, newNode.parent, sizeof(node)).

当然,您首先需要使用 malloc 为 newNode 的父节点分配内存(在这种情况下 calloc 没有意义 - 它用于数组)

newNode.parent = (NODE*)malloc(sizeof(NODE))

如果你想做一个深拷贝(即不重用引用的对象),你应该遍历 newNode 结构并为结构中包含的每个指针分配内存,然后应用 memcopy。

于 2012-08-06T08:38:18.500 回答