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