首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-16 
int *定义的问题,为什么是NULLC/C++ code#includestdio.hint main(){int *a,*b,*c,*dprintf(%x %x %x

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是分配在栈上的指针,你需要给他赋值一个地址,才有意义。
如果不进行初始化赋值,这样使用是没有任何意义的。
他也许会指向任意的位置,这个和操作系统,编译器无关。


[解决办法]

热点排行