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

前端之家收集整理的这篇文章主要介绍了c带有char数组的&符号运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我对我正在测试的这段代码感到困惑时,我只是在玩指针和数组.
#include <iostream>
using namespace std;

int main(void) {
    char a[] = "hello";
    cout << &a[0] << endl;
    char b[] = {'h','e','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,’&’给出了整个字符串或者我在这里遗漏了什么?

解决方法

因为cout的运算符<<如果你传给一个char *作为参数,那就打印一个字符串,这就是& a [0].如果要打印地址,则必须明确将其转换为void *:
cout << static_cast<void*>(&a[0]) << endl;

要不就

cout << static_cast<void*>(a) << endl;
原文链接:https://www.f2er.com/c/110859.html

猜你在找的C&C++相关文章