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)并没有直接关系。