temp2
,temp1
是指向某些结构x的指针:
struct FunkyStruct x;
struct FunkyStruct *temp1 = &x, *temp2 = &x;
现在,在执行以下几行之后:
temp2=temp1;
temp1=temp1->nxt;
是否将temp2
与temp1
仍指向同一个内存位置?如果没有,请解释他们为什么会有所不同。
发布于 2018-05-31 16:43:59
最初,temp1
并且temp2
都包含的内存地址x
。
temp2 = temp1
意思是“赋值temp1
给temp2
”。由于它们具有相同的值,因此该命令不会执行任何操作。
表达的temp1->next
意思是“查看temp1
指向的数据结构的内部,并返回该字段的值next
。” 所以temp1 = temp1->next
赋值的temp1->next
to temp1
。(当然,查找发生在赋值之前) temp1
现在将包含next
字段碰巧包含的任何值。它可能与旧值相同,或者可能不同。
发布于 2018-05-31 18:01:57
不同。
你已将temp1最初指向的地址保存到temp2中。然后,你更改了temp1指向的内容,而不是temp1指向的另一端的变量。
如果你已经完成了
temp2 = temp1;
*temp1 = temp1->foo;
那么temp1和temp2都会指向(同一个)修改过的变量。
https://stackoverflow.com/questions/-100000197
复制相似问题