重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
最近、次のコードに出くわしました。
#include <stdio.h>
int* abc () {
int a[3] = {1,10,100};
return a;
}
int* xyz () {
int b[1] = {222};
return b;
}
int main() {
int *a, *b;
a = abc();
b = xyz();
printf("%d\n", *a);
return 0;
}
出力は222
です。'a'
内で宣言された配列を指していxyz()
ます。
私の質問は:
が内部で宣言されている配列を指しているのはなぜですか
xyz()
。関数内で宣言された配列は、関数
xyz()
の実行後にスコープ外になる必要があります。なぜそれが起こらないのですか?