私はCを調べていて、本「Pointers on C」から理解できなかった次の例に来ました。これがコードです。
次の宣言は、1 つのソース ファイルに存在します。
int a[10];
int *b = a;
しかし、別のソース ファイルでは、次のコードが記述されています。
extern int *a;
extern int b[];
int x, y;
...
x = a[3];
y = b[3];
2 つの割り当てステートメントが実行されると何が起こるか、誰か説明できますか? (整数とポインタの両方が 4 バイトを占めると仮定します。)
コードを実行しようとすると、セグメンテーション違反が発生しx
、コメントアウトして y の値を出力すると、0 になりました。概念は、ポインターと配列の違いでした。