【发布时间】:2014-03-03 12:27:12
【问题描述】:
我一直在关注这个tutorial,了解指向指针的指针 是如何工作的。
让我引用相关的段落:
int i = 5, j = 6, k = 7; int *ip1 = &i, *ip2 = &j;现在我们可以设置
int **ipp = &ip1;而
ipp指向ip1,后者指向i。*ipp是ip1,**ipp是i,或 5。我们可以用我们熟悉的箭头符号来说明这种情况,如下所示:如果那么我们说
*ipp = ip2;我们已将
ipp(即ip1)指向的指针更改为包含ip2的副本,因此它(ip1)现在指向j:
我的问题是:为什么在第二张图片中,ipp 仍然指向ip1 而不是ip2?
【问题讨论】:
-
请在定义时添加
ipp的类型,这样你的问题就完成了;-) -
因为
ipp指向ip1所以*ipp = ip2和ip1 = ip2一样 -
我们能不能别写离尖字太远的星号?
int **ipp远不如int** ipp直观,尤其是当**ipp意味着在类型声明之外完全不同的东西时。 -
@Darkhogg
int **ipp对我来说似乎很直观。这意味着,我正在制作**ipp和int。这是真的。 -
@user54609 含义和个人直觉分开,考虑一下:
ipp的类型是int**,所以只写int**而不是神奇的"imp取消引用是一个int"理解。