c - 函数参数中的整数双指针
问题描述
到目前为止,我对指针的了解是:指针指的是变量的地址
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
is value
,整个事情等价于
int* value;
*value = 963;
这是错误的,因为value
未初始化。取消引用未初始化的指针具有未定义的行为。
使固定:
int x;
int *value = &x;
reference(&value);
即使value
点某处963
可以存储。
推荐阅读
- python - C# Unity - 统一从相机中提取像素数组并在 python 中显示
- google-maps - Google Maps Static API - 推荐人政策问题
- python - 根据其中一个的列和另一个的行连接两个数据框
- python - 通过 Pandas 从数据库请求表数据时如何获取正确的块?
- powershell - Powershell - Active Directory - 将用户移动到基于 CSV 文件的员工 ID 和日期的 OU
- python - pandas:根据一列中的相似值,使用来自多个数据帧的值填充数据帧中的空列
- php - 无法使用 cassandra 和 php 创建键空间
- python - 如何对特定列中的值进行分组和计数
- ios - 无法使用混合 Cordova 离子 iOS 应用的 Appium 检查来识别元素
- ansible - 致命:[212.117.31.141]:失败!=> {“msg”:“无法获取远程文件(file.jar)的信息:不是目录”}