带有char数组的c ++&符号运算符

时间:2013-06-12 17:02:44

标签: c++ arrays pointers

当我对我正在测试的这段代码感到困惑时,我只是在玩指针和数组。

#include <iostream>
using namespace std;

int main(void) {
    char a[] = "hello";
    cout << &a[0] << endl;
    char b[] = {'h', 'e', 'l', 'l', 'o', '\0'};
    cout << &b[0] << endl;
    int c[] = {1, 2, 3};
    cout << &c[0] << endl;
    return 0;
}

我预计这将打印三个地址(a [0],b [0]和c [0]的地址)。但结果是:

hello
hello
0x7fff1f4ce780

为什么前两个案例有char,'&amp;'给出了整个字符串,或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:10)

因为cout的{​​{1}}打印了一个字符串,如果你传递一个operator <<作为参数,那就是char*。如果您要打印地址,则必须明确地将其转换为&a[0]

void*

或只是

cout << static_cast<void*>(&a[0]) << endl;