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

时间:2020-10-31 05:47:56

标签: c pointers parameters

#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 一起使用。

1 个答案:

答案 0 :(得分:-1)

我尝试了您的代码,当将null指针的指针在initialize()函数中分配为null时,它引起了细分错误,这应该是由null指针引起的。