首页 > 其他 > 详细

关于传值的小问题

时间:2014-08-01 04:52:59      阅读:289      评论:0      收藏:0      [点我收藏+]
#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的栈也没了,但这个栈和数据结构上的栈好像关系不大吧

 

关于传值的小问题,布布扣,bubuko.com

关于传值的小问题

原文:http://www.cnblogs.com/zzyoucan/p/3883914.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!