我要helloo请选择角色怎么选

前者存放在栈里后者存放在静態区

p是个数组,在{}里面定义是个局部变量说明这个函数执行完毕之后局部变量销毁p这个数组中的值都没有了。

p虽然是个数组但是单独鼡p这个变量,值是p这块数组的首地址因为返回的是值传递,所以这个首地址被传到了下面的s中

s指向这个内存,而这个内存在getMem函数调用結束后就销毁了里面存放的不知道是什么了。所以打印的话不一定出现什么

   成功 我要hellooworld字符串存放在常量区,这个地方存放的内容并不會在函数结束后销毁

  string ss = getMem();//错误,s是局部变量,返回值是个引用本质是在临时区建立了一个引用,这个临时的引用引用了rs 也就是s但是函数结束了,这个局部的s小时了消失之后返回的引用还引用他,不但引用还用它来初始话ss,那就错了

  string &rs = getMem();//错误 相当于rs是个函数内部局部变量s的引用,s已经清空所以cout<<rs 是乱码。这个表达式成立是因为返回值是个引用引用是个左值,不是右值左值可以用左值引用来引用 


参考资料

 

随机推荐