空指针为什么我得到这个输出?

时间:2019-03-03 17:17:02

标签: c pointers

我最近尝试学习C语言中的指针。所以我使用了(空指针)int *pnumber = NULL;,但我不明白为什么我的输出是17824320。请您解释一下?

#define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>

    int main() {

        int number = 0;
        int *pnumber = NULL;
        number = 10;
        pnumber = &number;
        printf("%d \n", number);
        printf("%d \n", pnumber);

        return 0;

    }

输出为

  

10

     

17824320(我认为是内存地址)

1 个答案:

答案 0 :(得分:2)

pnumber = &number;
...
printf("%d \n", pnumber);

来自int *pnumber = NULL;的初始NULL值被pnumber = &number;修改,因此您将 pnumber 的值写为 number 的地址

如果您进行printf("%d \n", *pnumber);则写10