码迷,mamicode.com
首页 > 其他好文 > 详细

关于传值的小问题

时间:2014-08-01 04:52:58      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   数据   问题   ar   

#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

关于传值的小问题

标签:style   blog   color   os   io   数据   问题   ar   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!