在C语言中,给指针变量这样赋值对吗

程序如下:
int a;
int *p;
p=&a;
(提示a只声明,没有初始化,帮忙看看,说说依据)
1、
可是a没有赋初值,a在内存中的地址是不确定的。给我赋给指针p的话,会很危险的。我分析的对吗
2、
我不清楚内存是如何给变量分配内存单元的,声明了就分配内存单元,还是做了初始化才分配内存单元。

第1个回答  2012-07-17
不管你是在全局定义的还是局部定义的。a在内存中地址是确定的,可以用指针指向。如果在局部域定义的,只能说a的值不确定,不能说a的地址不确定。追问

我不清楚内存是如何给变量分配内存单元的,声明了就分配内存单元,还是做了初始化才分配内存单元。

追答

定义就分配,局部域(像函数里),分配在栈空间。全局变量分配在数据段中。所以你不用担心地址问题,要注意的就是指针使用问题,有很多memory leak的问题需要注意。

追问

memory leak是什么意思了

本回答被提问者和网友采纳
第2个回答  2012-07-17
在指令 int a 时,系统会自动的分配一个大小为int 型的空间给a,所以a是有确切地址的 !
所以,你只能够说a的值是不确定的但你不能说a的地址是不确定的。。。
第3个回答  2012-07-17
对的。。。*p引用时就是a的值了追问

可是a没有赋初值,a在内存中的地址是不确定的。给我赋给指针p的话,会很危险的。

追答

有没有前提条件???如果是在一个固定的程式里面,a=0,如果是数组,完全可以。。

追问

没有前提条件

追答

这是不是第一句??

追问

是第一句话

相似回答