This question already has answers here:
How to access a local variable from a different function using pointers?
                                
                                    (9个答案)
                                
                        
                                3年前关闭。
            
                    
当我在Visual Studio中尝试以下代码时,它给了我45,但是当我在在线编译器中运行它时,有的给我一个错误,有的给我0.我期望它们都给我一个错误,怎么回事? !
谢谢

#include <stdio.h>

int *f(int *a)
{
    *a = 23;
    int b = 45;
    return &b;
}

int main(void)
{
    int i = 2;
    int *p;
    p = f(&i);

    printf("The return value of function f: %d\n\n", *p);
    return 0;
}

最佳答案

问题:

return &b;


您正在返回指向超出范围的局部变量的指针-因此该指针将无效

如果收到错误,则取决于该编译器的各种设置

关于c - C中的局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40182644/

10-11 19:36