gpt4 book ai didi

c++ - 为什么 cout 打印 char 数组与其他数组不同?

转载 作者:IT老高 更新时间:2023-10-28 22:33:44 30 4
gpt4 key购买 nike

我正在使用 C++ 来了解指针的工作原理。我有这段代码使用数组,我使用它只是为了了解等价物如何与指针一起使用。

int main() {    
int arr[10] = {1,2,3};
char arr2[10] = {'c','i','a','o','\0'};
cout << arr << endl;
cout << arr2 << endl;
}

但是,当我运行它时,arr 输出整数数组的第一个元素的地址(如预期的那样),但 arr2 不输出字符数组的第一个元素;它实际上打印“ciao”。

我遗漏了什么或者我还没有了解到什么?

最佳答案

对于 const void*const char* 重载的是运算符<<。您的 char 数组被转换为 const char* 并传递给该重载,因为它比 const void* 更适合。但是,int 数组被转换为 const void* 并传递给该版本。 operator<< 的版本采用 const void* 只是输出地址。采用 const char* 的版本实际上将其视为 C 字符串并输出每个字符,直到终止空字符。如果您不希望这样,请将您的 char 数组转换为 const void* 在将其传递给 operator<<:

时显式
cout << static_cast<const void*>(arr2) << endl;

关于c++ - 为什么 cout 打印 char 数组与其他数组不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/501816/

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