一个简单关于内存地址的C++程序

来源:百度知道 编辑:UC知道 时间:2024/06/19 02:04:50
有这么一个C++程序:

#include<iostream.h>
void main()
{
struct stu{
int a;
char b;
double c;
};
struct stu stu1={10,'t',3.45};
cout<<"a的长度:"<<sizeof(stu1.a)<<"\t"<<"a的地址:"<<&(stu1.a)<<"\n";
cout<<"b的长度:"<<sizeof(stu1.b)<<"\t"<<"b的地址:"<<&(stu1.b)<<"\n";
cout<<"c的长度:"<<sizeof(stu1.c)<<"\t"<<"c的地址:"<<&(stu1.c)<<"\n";
}

运行结果是:
a的长度:4 a的地址:0x0013FF70
b的长度:1 b的地址:t烫虤柜柜?@?
c的长度:8 c的地址:0x0013FF78
Press any key to continue

请问为什么b的地址是乱码啊····这是怎么回事?应该如何解决,谢谢

<<&(stu1.b) 给cout传的是一个字符的地址,但函数认为这是一个“字符串指针”, 因为 字符串指针其实就是串首字符的地址。所以显示是当作字符串显示的,后面的乱码其实stu1.c。
你改成(int)&(stu1.b) 就好了