字符,你的地址在哪里?

字符,你的地址在哪里?

在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<

这样,就可以正确输出字符的地址了。


分享到:


相關文章: