c++语言题,函数体中的局部动态变量会在函数运行结束后被系统回收,那如果有指针指向这个变量的地址会怎

c++语言题,函数体中的局部动态变量会在函数运行结束后被系统回收,那如果有指针指向这个变量的地址会怎么样?

比如请分析一下这个程序
void f(int *p)

int sum=1;
p=∑

void main()
{int s=0,*p=&s;
f(p);
cout<<*p;

请详细的分析一下,谢谢
那个∑应该是*sum

第1个回答  2011-12-17
如同你住旅社.
你在旅社住了一晚上`你住那个房间就是个局部变量`用完就给别人用了`~
如果你把东西拉在旅社里了`如果运气好的话`回去还能找到东西,如果运气不好`别人在你退房后入住过了`那么你的东西就可能找不到了`~
第2个回答  2011-12-17
看来楼主没有理解函数是如何传参的。所有的传参都是值传递,你把p当做参数传给了函数f,其意义是f得到了p的一份拷贝,f只能操作这份拷贝,而这份拷贝是一个局部变量,你在函数里无论对它怎么操作,都不会影响p的。所以p的值不会变,p指向的值也没有变。追问

为什么所有传递都是值传递?不是还有地址传递和引用传递吗?还有这个程序的输出结果哦是什么,谢谢了

追答

所谓的指针传递,其实质也是值传递,也就是将你要修改的变量的指针传了一个拷贝进去了,指针本身是改不了的,所以,如果你要修改指针本身,就要将指针的指针传进去,从而通过指针直接修改变量所在的内存。例如你的举例,试图想修改指针p,那么就要传递指向p的指针才行,当然指向p的这个指针,其本身的传递方式也是值传递。

本回答被提问者采纳
第3个回答  2011-12-17
会编译不成功出现某某指针未声明什么的...
你要是把这段程序在编译器上编译一下就知道会怎样了! 结果肯定是编译不成功..
原因是*p, 因为*p并没有声明,希望你去百度上多查看关于作用域相关的资料。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网