当前位置: 代码迷 >> C语言 >> 关于结构体内存计算的问题
  详细解决方案

关于结构体内存计算的问题

热度:286   发布时间:2007-05-23 21:40:59.0
关于结构体内存计算的问题

定义结构体如下:
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  

----------------解决方案--------------------------------------------------------
我也不会.
同问
----------------解决方案--------------------------------------------------------
内存对齐问题.
----------------解决方案--------------------------------------------------------
指针看做一个地址算4的.
----------------解决方案--------------------------------------------------------
先谢过nuciewth.
“指针看做一个地址算4的.”这个可以理解。
可是“内存对齐问题.”是什么意思呢?可以说清楚一点吗?多谢!
----------------解决方案--------------------------------------------------------
没人回答吗?自己顶一个!!还请高手指教!!
----------------解决方案--------------------------------------------------------
  相关解决方案