C中的局部变量

时间:2016-10-21 17:48:14

标签: c local-variables

当我在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;
}

1 个答案:

答案 0 :(得分:1)

<强>问题:

return &b;

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

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