【发布时间】:2011-09-06 14:37:30
【问题描述】:
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;
}
【问题讨论】:
-
阅读 1845 次投票的答案:stackoverflow.com/questions/6441218/…