指针的初始化和值的初始化

45 阅读1分钟
struct st {
    void* a;
    int b;
};

st* c;

代码执行到st* c的时候仅初始化了指针c的值,使其等于NULL,通过汇编可以看到 c == 0x0。此时,只能说明指针已经被初始化,但是指针对应的st对象还没有被初始化。

差点迷的一个问题: 整数0和NULL之间的关系,我竟然会思考**初始化了整数0会将NULL对应的0占用了。

NULL 在 C 语言中只是一个宏定义,通常被定义为整数常量 0 或 (void *)0。它本身并不占用内存地址,而是在编译时被替换成相应的整数常量。

当你定义一个整数变量并将其初始化为 0 时,编译器会在内存中分配一个存储空间来存放这个整数 0。这个存储空间的地址与 NULL 的值(通常是 0)并没有直接关系。