到目前为止,我对指针的了解是: 指针指向变量的地址
int a = 0 ;
int *p = &a ;
双指针指向指针变量的地址
int *b = &a ;
int **c = &b ;
据我所知,执行以下代码应该没有问题:
#include<stdio.h>
void reference(int **input)
{
**input = 963;
}
int main(void)
{
int* value;
reference(&value);
printf("%d\n", *value);
system("PAUSE");
return 0;
}
在此代码中,我希望在控制台中看到“963”。 当我执行代码时,构建成功但 cmd 只是停止。 这个简单的代码可能会出现什么问题?
最佳答案
我们可以重写
int* value;
reference(&value);
没有功能,给予
int* value;
int **input = &value;
**input = 963;
因为*input
是value
,所以整个事情等同于
int* value;
*value = 963;
这是错误的,因为 value
未初始化。取消引用未初始化的指针具有未定义的行为。
修复:
int x;
int *value = &x;
reference(&value);
即使 value
指向某处可以存储 963
。
关于c - 函数参数中的整数双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52915095/