C语言中结构体所占字节数
#include<stdio.h>
#include<string.h>
struct node
{
int a; //4
int b; //4
double c; //8
char d; //1
//17
};
int main()
{
printf("%d",sizeof(struct node));
return 0;
}
输出结果为:24
其原理为:
先将结构体内所有类型(包括重复类型)所占字节数相加,以占用字节数最大的类型为尺
有以下两种情况
- 总数是尺的倍数,结构体所占字节数:总数
- 总数不是尺的倍数,结构体所占字节数:尺*(总数/尺+1)
以上程序所占字节数计算过程为:
首先,总数:4+4+8+1=17
然后我们可以看出,double型是该结构体中最大的,于是尺=8
总数17并不是8的整倍数,属于第二种情况
所以该结构体所占字节数为:8*(17/8+1)=24