C ++中字符和整数数组的不同行为

时间:2019-06-03 09:46:01

标签: c++ arrays

这是c ++中的一小段代码,我分别创建了两个char和int数据类型的数组。但是,相同的打印操作对这两个数组的表现却不同

#include<iostream>
using namespace std;
int main()
{
    char a[5]={'h','e','l','l','o'};
    int b[5]={1,2,3,4,5};

    cout<<a;                       //displays the string "hello"
    cout<<"\n"<<b;                 //displays the address of b[0]
    return(0);
}

我希望输出是两个数组的第一个元素的地址,即分别为a [0]和b [0]的地址,但是在这种情况下char类型的数组的行为有所不同。

1 个答案:

答案 0 :(得分:7)

这是cout的运算符<<的特殊重载,它将char *参数视为以null结尾的字符串,并输出整个字符串。

如果要打印地址,请将其投射到void *

cout << (void *) a;