打印出指向char数组的第一个索引的指针值

时间:2016-01-07 01:57:18

标签: c++ arrays pointers

我是C ++的新手,正在尝试学习指针的概念。当我试图打印出pStart的值时,我希望它的值是十六进制中text [0]的地址(例如0x7fff509c5a88)。但是,打印出来的实际值是abcdef。

有人可以向我解释为什么会这样吗?我错过了哪些部分?

char text[] = "abcdef";
char *pStart = &text[0]; 
cout << "value of pStart: " << pStart << endl;

1 个答案:

答案 0 :(得分:3)

Iostreams提供了一个重载,它假定指向char的指针指向NUL终止(C风格)的字符串,并打印出它指向的字符串。

要将地址本身打印出来,请将其转换为指向void的指针:

pStart

请注意,您根本不需要cout << "address of text: " << (void *)text << "\n"; 。数组的名称(通常包括这种情况)计算为数组开头的地址,因此您可以直接打印它:

endl

不要习惯使用{{1}}。它做了你几乎肯定没有意识到并且几乎从不想要的事情。