1

次のように、配列要素ごとに 4 バイト (32 ビット) になると予想される unsigned long の配列があります。

unsigned long giantbuffer[1024];

ただし、配列要素のアドレスを出力すると、次のようになります。

printf("%X\n", &giantbuffer[0]);  --> gives ab8470

printf("%X\n", &giantbuffer[1]);  --> gives ab8478

また、

sizeof(giantbuffer) gives 8192, and sizeof(giantbuffer[0]) gives 8.   

つまり、配列要素ごとに 8 バイトです。これはシステムのアーキテクチャに依存するものですか?私はCが初めてなので、これは明らかなことでしょうか? これは、私のポインター演算に大混乱をもたらします。「ch」を使用して、構文のインタープリター コマンドライン スタイル チェックなどを行っています。これはそのプログラムの問題でしょうか?

4

2 に答える 2