zoukankan      html  css  js  c++  java
  • 返回局部变量或临时变量的地址的问题

    各位大神,请帮忙分析一下下面的代码:

    ;

    int* func(void) {
    int a[5] = {1,2,3,4,5};
    printf("%p %d ",a,*a);
    printf("%p %d ",a+1,*(a+1));
    printf("%p %d ",a+2,*(a+2));
    printf("%p %d ",a+3,*(a+3));
    printf("%p %d ",a+4,*(a+4));
    return a;
    }
    int main() {
    int a[5];
    int *p = a;
    p = func();
    printf(" ");
    printf("%p %d ",p,*p);
    printf("%p %d ",p+1,*(p+1));
    printf("%p %d ",p+2,*(p+2));
    printf("%p %d ",p+3,*(p+3));
    printf("%p %d ",p+4,*(p+4));
    return 0;
    }

    请问:为什么函数func返回局部数组a,然后赋值给main函数中的int *p,其内存地址都相应的传过来了,但是main函数中用int *p执行输出的时候,只有p[0]的值是对的,其余都是随机值??

    注:我用的是win7系统下的visual studio2010得出的结果,且studio2010中会有如下的提示:

    1>e:2010-project123123123.cpp(16): warning C4172: 返回局部变量或临时变量的地址

  • 相关阅读:
    STL——pair
    STL——stack
    Python学习之编程基础
    开学第一课,课课有总结
    DNS域名解析
    FTP文件传输服务
    DHCP原理及配置
    Linux中配置网卡
    indoe与block解析
    Linux系统安全管理
  • 原文地址:https://www.cnblogs.com/qiangupc/p/3149955.html
Copyright © 2011-2022 走看看