首页 > 解决方案 > 函数参数中的整数双指针

问题描述

到目前为止,我对指针的了解是:指针指的是变量的地址

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 只是停止。这个简单的代码可能会出现什么问题?

标签: cfunctionpointers

解决方案


我们可以重写

int* value;
reference(&value);

没有这个功能,给

int* value;
int **input = &value;
**input = 963;

因为*inputis value,整个事情等价于

int* value;
*value = 963;

这是错误的,因为value未初始化。取消引用未初始化的指针具有未定义的行为。

使固定:

int x;
int *value = &x;
reference(&value);

即使value点某处963可以存储。


推荐阅读