| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 260 人关注过本帖
标题:关于结构体内存计算的问题
收藏  订阅  推荐  打印 
蓝血鱼
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-5-21
关于结构体内存计算的问题

定义结构体如下:
struct student
{
int iNum;
char *cName;
char cSex;
int iAge;
}

int main()
{
student sStu1;

sStu1.iNum = 97001;
sStu1.cName = "Wen Tian Xiang I am student";
sStu1.cSex = 'F';
sStu1.iAge = 19;

cout <<"sStu1.cName" << ends << sizeof(sStu1.cName) << endl;
cout <<"sStu1.iNum" << ends << sizeof(sStu1.iNum) << endl;
cout <<"sStu1.iAge" << ends << sizeof(sStu1.iAge) << endl;
cout <<"sStu1.cSex" << ends << sizeof(sStu1.cSex) << endl;

cout << "student" << ends << sizeof(student) <<endl;

return 0;
}

运行结果:
sStu1.cName 4
sStu1.iNum 4
sStu1.iAge 4
sStu1.cSex 1

student 16

问题:1\不是说结构体的内存大小是各数据成员的大小的和吗?那和为13,那怎么student的大小为16?
2\char *cName的大小为什么是4呢?

谢谢!!

[此贴子已经被作者于2007-5-23 21:43:28编辑过]

搜索更多相关主题的帖子: 结构  student  int  ends  
2007-5-23 21:40
crackerwang
Rank: 4
等级:高级会员
威望:8
帖子:835
积分:8452
注册:2007-2-14

我也不会.
同问

2007-5-23 21:58
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:99
帖子:9589
积分:95708
注册:2006-5-23

内存对齐问题.

倚天照海花无数,流水高山心自知。
2007-5-23 22:14
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:99
帖子:9589
积分:95708
注册:2006-5-23

指针看做一个地址算4的.

倚天照海花无数,流水高山心自知。
2007-5-23 22:36
蓝血鱼
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-5-21

先谢过nuciewth.
“指针看做一个地址算4的.”这个可以理解。
可是“内存对齐问题.”是什么意思呢?可以说清楚一点吗?多谢!
2007-5-23 22:49
蓝血鱼
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-5-21

没人回答吗?自己顶一个!!还请高手指教!!
2007-5-24 12:42
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.064240 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved