次のコードの場合:
int (*ptr)[10];
int a[10]={99,1,2,3,4,5,6,7,8,9};
ptr=&a;
printf("%d",(*ptr)[1]);
何を印刷する必要がありますか?ここでガベージ値を期待していますが、出力は1
.
(そのために、この方法でポインタ配列を初期化すると、つまり順番ptr[10]
に要素を指し始めると結論付けていますa[10]
)。
しかし、次のコード フラグメントはどうでしょうか。
int *ptr[10];
int a[10]={0,1,2,3,4,5,6,7,8,9};
*ptr=a;
printf("%d",*ptr[1]);
セグメンテーション違反を引き起こしています。