返回局部变量的地址

问题描述

'''

        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; 直接返回地址,编译器会警告您

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