c++ - int 和 char 数组有什么区别?

标签 c++

下面的int和char数组有什么区别:

int main()
{
    int numbers[] = {2,1,3};
    char letter[] = {'a','b','\0'};
    cout<< numbers<<endl;
    cout<< letter<<endl;
}

输出:

0x22ff12 // an address
ab

为什么不显示 213? 我知道数组的名称将指向其第一个元素的地址,但为什么 char 数组显示不同的行为吗?

最佳答案

没有operator<<确切地说,采用数组 的重载,因此您传递的参数(例如 numbersletter )经过数组到指针的转换,变为 void*char*分别。

operator<<() 过载这需要 const void* ,另一个需要 const char* .当你打电话时:

cout<< numbers<<endl;

const void*版本匹配,但是当您调用时:

cout<< letter<<endl;

const char*版本匹配。

const void*版本,显示指针,同时使用 const char*版本,字符串显示到空终止符。

关于c++ - int 和 char 数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271965/

相关文章:

c++ - "undefined reference to PrintArgv": why?

c++ - POCO HTTPS 请求验证服务器证书

C++11,GCC 4.8.1,Code::Blocks,线程,好头疼

c++ - 删除字符串中分隔符之间的字符

c++ - 模板函数无法识别

c++ - 结构之外的 Node * head 有什么作用?

c++ - 使用 C++ 和 XML 数据绑定(bind)的开源项目

Python 嵌入式 C++

c++ - .Qt : Blocking QObject from receiving signals

c++ - 如何在 C++ 中的 ifstream 函数生成的文件中搜索特定单词