我的代码是这样的:
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
应该指向 a null terminator
,即\0
. 但为什么cout << *(ca+1) << endl;
给我\210
作为结果?