嗨,我有个关于双指针的问题。例如,在本代码中:
int a, b=2;
int *iPtr1, **iPtr2;
iPtr1 = &a;
iPtr2 = &iPtr1;
*iPtr1 = b+3;
*iPtr2 = iPtr1;
最后一行
*iPtr2 = iPtr1;
它仅仅告诉
iPtr1
指向自身,因为取消对双指针的引用一次就像使用iPtr1
? 最佳答案
使用gdb
跟踪执行,然后您将看到最后一行*iPtr2=iPtr1
没有任何更改。(有点像iPtr1=iPtr1
)
在iPtr2 = &iPtr1;
上,iPtr2
已经指向指针所在的地址,而不是指向的地址。
注意:不能将iPtr1
替换为iPtr1
,因为此时iPtr2=&iPtr1
具有垃圾值(如果它是本地非静态变量),并且取消对它的引用是未定义的行为。