当我对正在测试的这段代码感到困惑时,我只是在玩指针和数组。
#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 的前两种情况,'&' 给出了整个字符串,或者我在这里遗漏了什么?