+ -
当前位置:首页 → 问答吧 → 野指针的值是从哪里来的????

野指针的值是从哪里来的????

时间:2011-12-07

来源:互联网

int main()
{
int a;
int* p;
return 0;
}

在这个main函数中 a的值是个乱七八糟的值了 它的值是从a所占据的内存中读出来的 那么指针p的值 它的值难道也是从它所占据的内存中读出来的吗???不是这样的吧。。。。。。。
p的这个值 打印出来 肯定是个地址值 这个地址值又是从哪来的呢 是怎么给到p的呢??

作者: daihenan   发布时间: 2011-12-07

p a都是变量,本质上是一样的啊

作者: Demon__Hunter   发布时间: 2011-12-07

能理解p和*p的区别吗?
p的值也是从它所占据的内存中读出来的。
*p的值取决于p,但是否能读不一定。

作者: yulinlang   发布时间: 2011-12-07

都是变量,类型是int*而已

作者: riyueming184   发布时间: 2011-12-07

引用 2 楼 yulinlang 的回复:
能理解p和*p的区别吗?
p的值也是从它所占据的内存中读出来的。
*p的值取决于p,但是否能读不一定。


这个我知道 你的意思是说 p的值是从p所占据的内存中读出来了之后 转换成指针类型再显示出来是吗
但我的试验是 取得&p 然后记录下来 
然后把指针p换成了int型的变量p 再取得&p 它的值与之前记录的值是一样的 说明两次p所在的地址是一样的 但两次p的值却是不相同的。。。。。

作者: daihenan   发布时间: 2011-12-07

引用 3 楼 riyueming184 的回复:
都是变量,类型是int*而已


嗯 都是变量 那么指针p的值 是p所占据的内存 然后读出来 并且转换成了指针类型打印出来的是吗??

作者: daihenan   发布时间: 2011-12-07

a的空间时,有可能是0也可能是垃圾值,随机的
指针p的不太清楚,应该与a类似。
vs2010中不能直接输出未赋值的p指针所指向的数据,生成的程序报错。

作者: moonclock   发布时间: 2011-12-07

p是指针变量,存放的是地址值

作者: MM181   发布时间: 2011-12-07

p存放的是地址,p没有显示指向一个地址时,由系统随机的分配一个值。
比如p=&a,则p就存放的是a的地址,在没有做这个赋值之前,p是一个随机的值,根据编译环境而异

作者: dongsqi   发布时间: 2011-12-07

引用 6 楼 moonclock 的回复:
a的空间时,有可能是0也可能是垃圾值,随机的
指针p的不太清楚,应该与a类似。
vs2010中不能直接输出未赋值的p指针所指向的数据,生成的程序报错。


这位仁兄看懂我想问的问题了 
但我用的是vc6编译器 能看到p的值 真想不明白p的值是从哪里来的
看汇编也看不懂。。。

作者: daihenan   发布时间: 2011-12-07

引用 8 楼 dongsqi 的回复:
p存放的是地址,p没有显示指向一个地址时,由系统随机的分配一个值。
比如p=&a,则p就存放的是a的地址,在没有做这个赋值之前,p是一个随机的值,根据编译环境而异


是系统为p随机分配的????你是说p所占据的内存是系统随机分配的 还是p所占据的内存中的值是系统随机分配的????
那a的值呢????a所占据的内存中的值 是随机的值 这个值 不是被分配的吧 而是栈中的一些垃圾数据

作者: daihenan   发布时间: 2011-12-07