私のコードは次のようなものです:
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がはっきりとわかります。8800
私が理解したように、ca+1はを指す必要null terminatorがあり\0ます。しかし、なぜ結果としてcout << *(ca+1) << endl;私\210を与えるのですか?