<分区>
Possible Duplicate:
Returning the address of local or temporary variable
添加函数实现错误。它应该返回一个值而不是指针。 为什么在打印 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;
}