关于C语言链表节点赋值后数据一致性的技术咨询
节点数据赋值后的一致性问题
先看你的代码片段:
// 示例:仅为场景代码片段 typedef struct node_tag{ int data; struct node_tag* next; }NODE; char y = ')'; NODE *x = (NODE *)malloc(sizeof(NODE)); x->data = y; x->next = NULL; NODE *node = (NODE *)malloc(sizeof(NODE)); // 我知道语法可能存在问题,但请解答我的疑问 node->data = x->data; // node的data是否会与x的data相同? node->next = NULL;
执行node->data = x->data;后,node节点的data和x节点的data完全一致。
具体解释:
- x->data是int类型,赋值时char类型的
y(值为')')会被隐式转换为对应的ASCII整数值(')'的ASCII码是41),存储在x节点的data成员里。 node->data = x->data;是值拷贝操作:把x节点data成员中存储的数值,直接复制到node节点的data成员对应的内存空间中。- 两个节点的data是独立的内存区域,但此时它们存储的数值完全相同。后续如果修改其中一个节点的data值,另一个不会受到任何影响,因为各自持有独立的数值拷贝。
内容的提问来源于stack exchange,提问作者User617290653251457439
相关产品推荐
相关产品推荐

