C语言中的内存是比较复杂的,能够认识了解内存,对学习C语言能有莫大的帮助!
关于结构体的大小有如下规律:
1、结构体的大小是由n个“结构体中最大的那个类型”的大小模块组成(n<=成员个数);
2、一个模块中,可以存储多个成员,前提是多个成员的大小不超过模块存储的大小;
3、结构体中的成员按定义顺序存储。
文字表达总是不方便,我们可以用sizeof()来计算大小。
sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
sizeof(long) = 4
sizeof(float) = 4
sizeof(double) = 8
下面是5个例子:
(1)
struct Str1
{
char a;
char b;
}str1;
sizeof(Str1) = 2
结构体内最大的成员大小是sizeof(char)=1,所以str1的大小是1+1 = 2;
(2)
struct Str2
{
char a;
char b;
int c;
}str2;
sizeof(Str2) = 8
结构体内最大的成员大小是sizeof(int)=4,按照顺序存储,所以str1的大小是4+4 = 8;
(3)
struct Str3
{
char a;
int c;
char b;
}str3;
sizeof(Str3) = 12
结构体内最大的成员大小是sizeof(int)=4,按照顺序存储,所以str1的大小是4+4+4 = 12;
(4)
struct Str4
{
char a;
char b;
int c;
double d;
}str4;
sizeof(Str4) = 16
结构体内最大的成员大小是sizeof(double)=8,按照顺序存储,所以str1的大小是8+8=16;
(5)
struct Str5
{
char a;
double f;
char b;
int c;
double d;
}str5;
sizeof(Str5) = 32
结构体内最大的成员大小是sizeof(double)=8,按照顺序存储,所以str1的大小是8+8+8+8=32。