2016-11-19 79 views
-2

如果我没有记错的话,在类中,我发现设置一个指向数组的指针会设置指针来保存该数组的第一个元素的地址。指向char数组的指针会打印出数组元素而不是第一个元素的地址?

int main() { 
char str1[5] = {'j', 'h', 'i', 'o', '\0'}; 
cout << str1 << endl; 
char *a=str1; 
cout << a << endl; 
} 

但是,以下代码打印出'jhio',而不是j的内存地址?这是为什么?

+0

'char *'的'operator <<'被重载以打印出指向的字符 –

回答

3

operator <<对于许多类型都是重载的。对于char *类型,它输出指针指向的字符串。如果你想输出存储在指针的地址,你应该写

cout << (void *)a << endl; 

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

STR1的类型退化为char *,这是一个C风格的字符串即达同一呼叫cout << "hello world"

0
char str1[5] = {'j', 'h', 'i', 'o', '\0'}; 
cout << str1 << endl; 
char *a=&str1[0]; 
cout << &a << endl; 
在COUT

运营商“< <”,这需要一个指针线

0

cout << a << endl;会打印出存储在该目标中值的开始。如果你想打印指针的地址,你可以使用&,这是在传递引用中经常看到的,用来获取指针的地址。这看起来像:cout << &a << endl;

相关问题