【发布时间】:2014-05-20 02:05:08
【问题描述】:
在研究双指针时,普遍的共识似乎是当想要更改任何变量的值并在从函数返回时保留新值时,需要传入其指针值。
如果已经使用指针,则需要传入双指针。
以下示例处理代码主要部分中的指针,将相同的指针传递给函数,更改其值并且新值在 main 中可见。
根据我读到的内容,应该需要一个双指针,否则新值在 main 中将不可见。
如果这确实有效,那么如何修改它以显示需要双指针?
void func1(int *z)
{
(*z)++;
printf("z=%d\n", *z);
}
int _tmain(int argc, _TCHAR* argv[])
{
int x = 100;
int *y = &x;
printf("y=%d\n", *y);
func1(y);
printf("y=%d\n", *y);
return 0;
}
【问题讨论】:
-
您正在传递一个 int 的地址,然后递增该地址的值。正如您所说,为什么需要“双指针”?
-
这个问题非常令人困惑。很少需要“双指针”或指向指针的指针。习惯性使用是混乱的标志。如果要连贯,这个问题的第一句话需要分成两三个部分。为什么你需要在已经有效的事情中寻求证明额外的复杂性是必要的?
-
如果你想传递一些东西给一个要修改的函数,你需要传递一个指向它的指针。如果你想让它修改
int,你需要一个int*。如果要修改int*,则需要int**。y具有int*类型,它允许您间接修改int(在这种情况下为x)
标签: c function pointers pointer-to-pointer