次の C コードの機能を正確に説明してくれる人はいますか? 特に最初の行と繰り返される行は?
int * p = &my_numbers[0];
int i;
int j = 0;
for (i = 0; i < 6; i++)
{
j += *(p + (i));
}
コンパイラ (GCC) は、イテレータをインクリメントするとき、1 バイトではなく sizeof(int) / 4 バイトであることを認識していますか? これはすべてのコンパイラで同じですか? もともと私は使用していました:
j += *(p + (i * sizeof(int)));
しかし、それは間違った答えを出しました:
j += *(p + (i));
正しい答えを出しました。
1バイトだけインクリメントしたい場合、何を書かなければなりませんか? (なぜこれをやりたいのかわかりません。言語の強く型付けされた性質により、charを使用してコンパイラに伝えることができるのではないでしょうか?)