下面的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<<
确切地说,采用数组 的重载,因此您传递的参数(例如 numbers
和 letter
)经过数组到指针的转换,变为 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/