コードは次のとおりです。
#include <stdio.h>
int *addition(int a, int b);
int result;
int *result_ptr;
int *addition(int a, int b)
{
int c = a + b;
int *d = &c;
return d;
}
int main(void)
{
result = *(addition(1,2));
result_ptr = addition(1,2);
printf("result = %d\n", result); //outputline1
printf("result_ptr = %d\n", *result_ptr); //outputline2
return 0;
}
現在のコードが書かれているようにコンパイルされて処理されると、result_ptr は奇妙な値を返します。ただし、2 つの出力行を入れ替えると、そうはなりません。なぜそれをするのですか?