【发布时间】:2013-02-14 20:50:21
【问题描述】:
您好,我有一个关于双指针的问题。例如在这段代码中:
int a, b=2;
int *iPtr1, **iPtr2;
iPtr1 = &a;
iPtr2 = &iPtr1;
*iPtr1 = b+3;
*iPtr2 = iPtr1;
在最后一行*iPtr2 = iPtr1;
只是告诉iPtr1 指向自己,因为只取消引用双指针一次就像使用iPtr1?
【问题讨论】:
-
其他人已经给了你答案,但我只想补充一点,IMO 绘制一张你的内存空间的小地图并显示什么指向什么是非常有帮助的。在这种情况下,您将拥有用于 a、b、iPtr1 和 iPtr2 的内存方块。最初 a 为空(未初始化)而 b 为 2。然后您将绘制一个从 iPtr1 到 a 的箭头(第一行代码 -
iPtr1 = &a;)。然后为第二行代码画一条从 iPtr2 到 iPtr1 的线。以这种方式进行,用“*”表示“沿着箭头走,那里有什么”。 -
感谢您的提示!我绝对需要像你说的那样练习写作和绘画,因为我倾向于只潜入编码,以后会花费我。
标签: c pointers indirection