当我在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;
}
答案 0 :(得分:1)
<强>问题:强>
return &b;
您正在返回一个指向超出范围的局部变量的指针 - 因此指针将无效
如果出现错误,则取决于该编译器的各种设置