繁体   English   中英

**pointer 和 &pointer 作为函数参数有什么区别?

[英]What is the difference between **pointer and &pointer as function parameter?

#include <stdio.h>

void initialize(int **);
void control(int **);

int main(void){

    int *pointer;
    printf("%p\n",pointer);
    initialize(&pointer);
    printf("%p\n",pointer);
    control(&pointer);

    return 0;
}

void initialize(int **point){
    printf("%p\n",point);
    *point = NULL;
    printf("%p\n",point);
}
void control(int **point){
    if(*point == NULL)
        printf("hi");
    else
        printf("good bye");
}

上面的代码没有问题,但是当我这样改的时候:

int **pointer;
printf("%p\n",pointer);
initialize(pointer);
printf("%p\n",pointer);
control(pointer);

它不能正常工作。 我想知道为什么它与&pointer 不同

我试过你的代码,它给出了分段错误,这应该是由空指针引起的,当空指针的指针在 initialize() 函数中被赋值为 null 时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM