ぶら下がっているポインターを持つプログラムを C で作成しました。
#include<stdio.h>
int *func(void)
{
int num;
num = 100;
return #
}
int func1(void)
{
int x,y,z;
scanf("%d %d",&y,&z);
x=y+z;
return x;
}
int main(void)
{
int *a = func();
int b;
b = func1();
printf("%d\n",*a);
return 0;
}
ポインターがぶら下がっているにもかかわらず、出力が 100になっています。
上記の関数に 1 つの変更を加えましたfunc1()
。y
上記のプログラムのように標準入力との間で値を取得する代わりに、z
コンパイル時に値を割り当てています。
func1()
を次のように再定義しました。
int func1(void)
{
int x,y,z;
y=100;
z=100;
x=y+z;
return x;
}
現在、出力は 200です。
誰かが上記の2つの出力の理由を説明してもらえますか?