0

嗨,我有一个关于双指针的问题。例如在这段代码中:

int a, b=2;
int *iPtr1, **iPtr2;

iPtr1  = &a;
iPtr2  = &iPtr1;  
*iPtr1 = b+3;
*iPtr2 = iPtr1;

在最后一行*iPtr2 = iPtr1; 它只是告诉iPtr1指向自身,因为取消引用双指针一次就像使用iPtr1

4

2 回答 2

2

*iPtr2指向任何iPtr1指向的东西。并iPtr2指出iPtr1它与iPtr1 = iPtr1.

于 2013-02-28T15:30:30.430 回答
1

用 跟踪执行gdb,然后你会看到最后一行*iPtr2=iPtr1没有改变任何东西。(有点像iPtr1=iPtr1

在 上iPtr2 = &iPtr1;iPtr2已经指向iPtr1THE POINTER 所在的地址 NOT THE ADDRESSiPtr1指向的地址。

注意:您不能用 替换iPtr2=&iPtr1*iPtr2=iPtr1因为此时iPtr2具有垃圾值(如果它是本地非静态变量)并且取消引用它是未定义的行为

于 2013-02-28T15:34:09.977 回答