ポインタ値への整数値の加算を理解するために、次のプログラムを作成しました。私の場合、ポインタは整数を指しています。pが整数へのポインタである場合、p + 2は「2つの整数先」(または2 *4バイト=8バイト)に格納されている整数のアドレスであることを理解しています。以下のプログラムは、整数配列では期待どおりに機能しますが、char配列では、空の行を出力するだけです。誰かが私に理由を説明してもらえますか?
#include <iostream>
int main() {
int* v = new int[10];
std::cout << "addresses of ints:" << std::endl;
// works as expected
for (size_t i = 0; i < 10; i++) {
std::cout << v+i << std::endl;
}
char* u = new char[10];
std::cout << "addresses of chars:" << std::endl;
// prints a bunch of empty lines
for (size_t i = 0; i < 10; i++) {
std::cout << u+i << std::endl;
}
return 0;
}