在C++中,当声明一个变量并进行初始化之后,便在内存中开辟了一块地方,变量名其实就是内存的地址,变量的值就是内存中存放的数据。因此,对变量名取地址运算符得到的就是该变量的内存地址。如下所示:
#include using namespace std; int main() { int num=1; int *p=# cout<输出的是变量num在内存中的地址。
然而,当我们换一个字符变量试试,结果就大跌眼镜。
#include using namespace std; int main() { char ch='a'; string s="string"; char *p1=&ch; char *p2=&s[0]; cout<结果前2个输出的是a加乱码,后两个输出的是字符串"string"。出现这个问题的原因是C++标准库中I/O类对输出操作符<
#include #include using namespace std; int main() { char ch='a'; string s="string"; char *p1=&ch; char *p2=&s[0]; printf("%p\n",p1); cout<这样,就可以正确输出字符的地址了。