【发布时间】:2015-06-23 17:54:16
【问题描述】:
我运行以下代码
int *pointer;
void fun1() {
int i;
pointer = &i;
*pointer = 11;
}
void fun2() {
printf("\nFun 2: Hello World\n");
}
int main() {
pointer = (int*) malloc(sizeof(int));
*pointer = 0;
fun1();
printf("%d\n",*pointer);
fun2();
printf("%d\n",*pointer);
return 0;
}
输出是
11
Fun 2: Hello World
20
我希望它是 11 而不是 20。我错过了什么?
谢谢。
【问题讨论】:
-
您正在获取一个指向局部变量的指针。
i函数返回后获取无效/随机。可能与Why does gcc throw a warning when returning a pointer to a local variable and not when returning a local variable? 和returning a local variable from function in C 重复