指向char数组的指针打印出数组元素而不是第一个元素的地址?

时间:2016-11-19 03:39:21

标签: c++ arrays pointers

如果我没记错的话,在课堂上我学会了设置一个指向数组的指针,设置指针来保存该数组的第一个元素的地址。

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

但是,以下代码打印出&#39; jhio&#39;而不是j的内存地址?那是为什么?

4 个答案:

答案 0 :(得分:3)

许多类型都会重载nohup $SENDMAIL -t < $MAILLOCATION &>/dev/null & disown 。对于类型operator <<,它输出指针指向的字符串。如果要输出存储在指针中的地址,则应编写

char *

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

答案 1 :(得分:0)

str1的类型降级为char *,这是一个C风格的字符串,与"的调用相同。

答案 2 :(得分:0)

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

运营商&#34;&lt;&lt;&#34;在cout中,它需要一个指向行开头的指针

答案 3 :(得分:0)

cout << a << endl;将打印出存储在该目标的值。如果要打印指针的ADDRESS,可以使用&,这在传递引用中很常见,以获取指针的地址。这看起来像是:cout << &a << endl;