|
发表于 2006-12-9 16:11:47
|
显示全部楼层
struct
{
int a;
int b;
char c;
};
我没研究过Linux C,只讲讲windows下的C的解法。
int 为4字节,没错,
char为1个字节也没错,不过,其实分配空间时,不可能只分配1个字节的空间,
由于你的int存在,所以,编译器分根据 sizeof(int)的长度,分配4个字节出来提供给“char c”使用,不过,“c”只占用了4个字节中的1个字节。
若结构体为
struct
{
int a;
int b;
char c;
char d;
}; 的话,结构体还只是占用了12个字节,因为你的给char 分配的4个字节还没被放满,直到4个字节被放满后,编译器才会再分配4个字节出来,如:
struct
{
int a;
int b;
char c;
char d;
char e;
char f;
char g;
}; 这样的话, 就为应该是:
4(a所占用的空间)+4(b)+4(c、d、e、f共同占用的)+4(g占用的) = 16。
========
若你的结构体为
struct
{
double a;
char b;
};
sizeof(double)为8个字节,所以,在此给char分配的空间也为 sizeof(double)个字节,
所以该结构体为 16个字节。
===========
以上只是个人见解,我也是学生,可能有误,不用BS我。 |
|