首页 > 解决方案 > 返回局部变量的地址

问题描述

'''

        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”时程序没有崩溃任何错误??????编辑:程序应该崩溃了,这是我的问题,而不是编译器发出警告的原因

标签: cpointersmemory-addresslocal-variables

解决方案


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

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


推荐阅读