• 返回局部变量或临时变量的地址的问题


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

    ;

    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: 返回局部变量或临时变量的地址

  • 相关阅读:
    sys_check
    python I/O 多路复用
    记一次刻骨铭心的值班失误
    RBAC用户角色权限设计方案【转载】
    国内maven镜像
    Hibernate 以流的方式获取数据
    Eclipse Maven Project
    spring maven pom
    git 常用操作
    Shell上传文件到ftp
  • 原文地址:https://www.cnblogs.com/qiangupc/p/3149955.html
Copyright © 2020-2023  润新知