私のコードは次のようなものです:
int main(int argc, char *argv[])
{
char ca[] = {'0'};
cout << *ca << endl;
cout << *(ca+1) << endl;
cout << ca[1] << endl;
cout << (char)(0) << endl;
return 0;
}
結果は次のようになります。
0
\210
\210
^@
このスレッドから、それは実際^@
と同じであることがわかりました。\0
ただし、結果を表示する\210
ために使用するためではないようhexdump
です。
bash-3.2$ ./playground | hexdump -C
00000000 30 0a 88 0a 88 0a 00 0a |0.......|
00000008
の代わりにあること\210
がはっきりとわかります。88
00
私が理解したように、ca+1
はを指す必要null terminator
があり\0
ます。しかし、なぜ結果としてcout << *(ca+1) << endl;
私\210
を与えるのですか?