微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

返回局部变量的地址

如何解决返回局部变量的地址

'''

        int* fun(){
        int x=5;
        int* p=&x;
        return p;//problematic part 
        }
    int main(){
    int *c=p;    //error when int "*c=&x;"
*c=13;
    }

'''

当我在主函数中创建一个“整数指针”,然后通过指针 p 将局部变量的地址分配给该“整数指针”,并为该特定地址分配一个新值时,它不会给出任何错误或警告,我认为应该。因为当我尝试通过“&x”返回“int x”的地址,然后尝试更改它的值时,程序按预期崩溃。

为什么当我使用“指针p”时程序没有崩溃???? 编辑:程序应该崩溃了,这是我的问题,而不是编译器给出警告的原因

解决方法

如果您尝试使用 return &x; 直接返回地址,编译器会警告您

这里没有警告你的原因是编译器“不知道”你已经分配了一个局部变量的地址。编译器根本不够聪明。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。