【发布时间】:2015-02-09 03:06:13
【问题描述】:
printf("%p\n\n", element); //0x1000020c0
table->head->element = element;
printf("%p\n\n", table->head->element); //0x1000020c0
我有一个指向结构的指针,该结构指向另一个存储 char* 变量的结构。问题是发送到此方法的指针(char * 元素)在其他地方被修改,我不希望这些修改在 table->head->element 中受到影响。简单地说我想让它们的值相等,而不是引用。
我知道我们可以为 2 个指针分配相同的值,如下所示:*p1=*p2。但是,我不确定如何使用结构来做到这一点,我试过了:
*(table->head->element) = *element;
但它不起作用。
我希望我能澄清我的问题。
【问题讨论】:
-
*table->head->element = *element;? -
没有工作我的意思是我得到了 EXC_BAD_ACCESS(code=1;...)
-
您似乎没有为至少一个指针分配空间
-
看来是对的。刚刚通过调试器检查。它不为结构头中的元素分配内存。但是,我有这一行 table->head = (struct node*)malloc(sizeof(struct node)); ,我虽然应该分配内存。
-
如果你有一个带有指针的结构,为结构分配空间会为指针本身分配空间,但不会为指向的数据分配空间。毕竟编译器不知道你什么时候要分配空间。
标签: c pointers struct char assign