我是C ++的新手,正在尝试学习指针的概念。当我试图打印出pStart的值时,我希望它的值是十六进制中text [0]的地址(例如0x7fff509c5a88)。但是,打印出来的实际值是abcdef。
有人可以向我解释为什么会这样吗?我错过了哪些部分?
char text[] = "abcdef";
char *pStart = &text[0];
cout << "value of pStart: " << pStart << endl;
答案 0 :(得分:3)
Iostreams提供了一个重载,它假定指向char的指针指向NUL终止(C风格)的字符串,并打印出它指向的字符串。
要将地址本身打印出来,请将其转换为指向void的指针:
pStart
请注意,您根本不需要cout << "address of text: " << (void *)text << "\n";
。数组的名称(通常包括这种情况)计算为数组开头的地址,因此您可以直接打印它:
endl
不要习惯使用{{1}}。它做了你几乎肯定没有意识到并且几乎从不想要的事情。