可能有重复:
返回局部或临时变量的地址
add函数的实现是错误的。它应该返回一个值而不是一个指针。 当打印ans和*ans_ptr并且程序甚至给出正确的结果时,为什么没有任何错误?我猜测z变量已经超出了作用域,应该会出现段错误。
#include <stdio.h>
int * add(int x, int y) {
int z = x + y;
int *ans_ptr = &z;
return ans_ptr;
}
int main() {
int ans = *(add(1, 2));
int *ans_ptr = add(1, 2);
printf("%d\n", *ans_ptr);
printf("%d\n", ans);
return 0;
}