【发布时间】:2018-05-02 13:18:16
【问题描述】:
请记住,我对指针的了解非常少,因为我刚开始学习它们。
当我在 C++ 中乱搞时,我写了一小段代码,认为它只会打印出字符串中每个字符的地址
#include <iostream>
using namespace std;
string a = "Hello, World!";
int main() {
for(int i=0; i<a.length();i++) {
cout << &a[i] << endl;
}
return 0;
}
然而,当我编译并运行它时,它导致它打印出来,好像字符串向左移动一样。
为什么当它使用 & 时,我认为它会检索地址,而不是获取字符串的其余部分,这是没有意义的。
【问题讨论】:
-
&a[i]是一个指向字符的指针。有一个特定的重载来处理它,即打印一个以空字符结尾的字符串。如果你想要地址,你需要将指针转换为 (void*)。 -
转换为
void *以避免