#include<stdio.h>
int *sample();
int main(void)
{
int *p;
p=sample();
printf("%d",*p);
return 0;
}
int *sample()
{
int *p,x=10;
p=&x;
return p;
}
上記のコードx
はローカル変数です。上記をgccでコンパイルすると、出力が得られます:
10
ローカル変数は、それが宣言されている関数内でのみ有効であり、コントロールが関数の外に出ると、ローカル変数の割り当てを解除する必要があります。しかし、これは起こっていません。wWyその印刷10? 誰でもこの動作を説明できますか?