gpt4 book ai didi

c++ - 奇怪的结果 (`\210` ) 打印字符数组的末尾时

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:28 25 4
gpt4 key购买 nike

我的代码是这样的:

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
^@

来自 this thread ,我知道 ^@\0相同实际上。然而,\210似乎不是因为当我使用 hexdump查看结果。

 bash-3.2$ ./playground | hexdump -C
00000000 30 0a 88 0a 88 0a 00 0a |0.......|
00000008

可以清楚的看到\21088而不是 00 .

据我了解,ca+1应该指向 null terminator ,即 \0 .但是为什么cout << *(ca+1) << endl;给我\210结果呢?

最佳答案

因为在声明字符数组时必须手动添加空终止符。如果您将其设为字符串(例如在char myString[] = "hi" 中),那么它将添加一个空终止符。但是如果你把它变成一个数组,加上大括号,它就不会了。

至于 0x88 字节,无论出于何种原因,它恰好是 RAM 中的下一个字节。

关于c++ - 奇怪的结果 (`\210` ) 打印字符数组的末尾时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com