这是C语言课程中的一道题。有人想从带有指针的函数返回一个值。他将指针地址分配给 result_ptr 并打印该指针的值。
当没有 A 行时,printf() 工作正常:printf() 打印 3。
然而,当在 printf() 之前调用另一个addition() 函数时,会发生错误:printf() 打印 5。
如果 A 行被注释掉,而 B 行(另一个 printf() 函数)被取消注释:printf() 将打印 0。
究竟发生了什么?
int *addition(int a, int b) {
int d = a + b;
int *c = &d;
return c;
}
int main(int argc, const char * argv[])
{
int *result_ptr = addition(1, 2);
addition(2, 3); // Line A
// printf("Another line\n"); // Line B
printf("result = %d \n", *result_ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)