首页 > 代码库 > 关于传值的小问题
关于传值的小问题
#include <iostream>#include <windows.h>int* fun(int* a){ std::cout << *a << std::endl;//这样有问题吗???? int temp = 100; return &temp;//这个是典型的错误}int main(){ int a = 9; int* temp = fun(&a);//传递&a,这个地址会不会在fun里面失效了?fun还是到了另外一个作用域了,我害怕这个栈上的内存失效了 std::cout << *temp << "\t" << *temp; getchar(); return 0;}1.首先局部变量的地址在函数退出之前地址是不会失效的,所以在调用fun()的过程中a的地址不会失效2.从栈的角度看首先main建立栈,将a压栈,然后fun建立栈,此时main栈没问题,所以访问没问题然后fun返回,fun的栈销毁了,main没问题,等main返回时main的栈也没了,但这个栈和数据结构上的栈好像关系不大吧
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。