首页 > 解决方案 > 空指针为什么我得到这个输出?

问题描述

我最近尝试在 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(我认为是内存地址)

标签: cpointers

解决方案


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

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

如果你这样做printf("%d \n", *pnumber);会写 10


推荐阅读