これはおそらくばかげた質問です。C ++で遊んで、少し混乱するこのコード行を見つけます
char buffer[7] = {'0', '1', '0', '9', '0', '1'};
// It prints 010901
printf("%s", buffer);
// It prints 0901
printf("%s", buffer+2);
なぜバッファ変数を (+ 2) できるのに、右に 2 文字シフトしたようになるのでしょうか?
char buffer[7] = {'0', '1', '0', '9', '0', '1' , '\0'};
Cの配列名は、基本的に配列の場所へのポインターでもあります
buffer[i]
*(buffer+i)
つまり、ポインター値に追加i
する [ポインター演算に従います]として変換されます。したがって、その場所の住所が表示されます。
に遭遇するまで a を出力しprintf
ます。したがって、出力。%s
\n
ポインターと配列について知るには、これを確認してください
その文字列をヌルで終了する必要があります、仲間!
char buffer[7] = {'0', '1', '0', '9', '0', '1', '\0'};
// It prints 010901
printf("%s", buffer);
// It prints 0901
printf("%s", buffer+2);