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

[复制链接]
查看11 | 回复1 | 2008-10-18 11:02:24 | 显示全部楼层 |阅读模式
有这么一个C++程序:
#include
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的地址是乱码啊····这是怎么回事?应该如何解决,谢谢

回复

使用道具 举报

千问 | 2008-10-18 11:02:24 | 显示全部楼层
<<&(stu1.b) 给cout传的是一个字符的地址,但函数认为这是一个“字符串指针”, 因为 字符串指针其实就是串首字符的地址。所以显示是当作字符串显示的,后面的乱码其实stu1.c。你改成(int)&(stu1.b) 就好了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行