读书人

int *定义的有关问题为什么是NULL

发布时间: 2012-03-16 16:34:56 作者: rapoo

int *定义的问题,为什么是NULL

C/C++ code
#include<stdio.h>int main(){    int *a,*b,*c,*d;    printf("%x %x %x %x\n",a,b,c,d);    return 0;}

结果:400520 0 1ff9f7c0 0
为什么b和d一直是0


[解决办法]
探讨
你声明了一个指针,编译器指针变量分配了内存,但是你没有为指针变量赋值,它的值是不可预知的,也就是它指向的内存每一块未知的区域。这样用指针是很危险的~!

[解决办法]
跟启动代码调用main函数时的存储有关系

[解决办法]
main函数也是被调用的,调用后通过修改堆栈指针,获得了它的局部自动变量的存储区域。这部分区域先前曾经存储过其他的内容,main的局部变量如果没有初始化,其值就是先前的东西了
[解决办法]
int *a是分配在栈上的指针,你需要给他赋值一个地址,才有意义。
如果不进行初始化赋值,这样使用是没有任何意义的。
他也许会指向任意的位置,这个和操作系统,编译器无关。


[解决办法]

如需要阅读该回复,请登录或注册CSDN!

读书人网 >C语言

热点推荐