可能重复:
返回本地或临时变量的地址
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;
}
Run Code Online (Sandbox Code Playgroud)