C语言sizeof()使用方法合集

公众号

欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。
C语言sizeof()使用方法合集_第1张图片

sizeof()

sizeof在C语言中有什么用呢?
sizeof在C语言中可以用来计算数据类型定义的变量占空间的大小,或者已经定义的变量占空间的大小。
1、可以计算数据类型的大小,比如int类型。

//sizeof的使用方法
int a = sizeof(int);
//上面我们可以使用sizeof计算int类型定义的变量占空间的大小,因为int类型占4个字节,所以a的值为4。

int a = sizeof(char);
//同理char的类型占1个字节,所以a的值为1。

2、计算变量的大小,变量有普通变量和数组变量和结构体变量、枚举变量。
计算普通变量的大小:

//定义一个变量b
int b;
//计算变量b占的内存大小,因为b变量为int类型的变量所以b变量占4个字节,所以a的值为4。
int a = sizeof(b);

//同理
char b;
int a = sizeof(b);
//因为b的变量类型为char类型,所以b变量占的内存大小为1,所以a的值为1。

计算数组变量占内存的大小:

int array[10];

//我们已经知道int定义的变量占4个字节,array数组有10个元素,所以a = 4 * 10等于40,
所以array变量占40个字节。
int a = sizeof(array);

//思考题:下面的a是多少?
int a = sizeof(array[0]);
//array[0]是数组array的10个元素中的一个,所以其实是和定义int b占的空间大小是一样的,
因为一个int定义的变量占4个字节,所以a的值为4。同理 int a = sizeof(array[10]);计算出来a的值也是4,
因为array[10]和array[0]一样都只是数组的一个元素,不是代表整个数组。

计算数组个数:
我们前面学习了如何计算一个数组占内存的大小,也学习了如何计算一个数组元素占的内存大小,
那么我们通过使用一个数组占内存的大小除上一个数组元素占内存的大小是不是就可以计算出数组的
个数?

数组个数 = 数组总的占内存的大小 / 一个元素的大小

//定义一个数组
int array[10];

//用来保存计算出数组个数的临时变量
int array_number;

//数组个数 = 数组总的占内存的大小 / 一个元素的大小
arrey_number = sizeof(array) / sizeof(array[0]);

使用一个宏定义实现上面的功能:

#define ARRAY_SIZE(arg)  (sizeof(arg) / sizeof(arg[0]))

计算枚举的大小:
在C语言中一个枚举类型变量占的内存大小为4个字节,所以我们使用sizeof计算枚举的变量的大小结果为4。

计算一个结构体类型占内存的大小:
结构体的元素(成员)越多,结构体占的内存越多,所以我们想要知道结构体占的内存的大小就可以使用sizeof来计算,使用方法和前面学习的一样。

//定义一个描述人基本信息的结构体(human_t)
struct human_t{
   unsigned int age;        //年龄,单位year
   unsigned int height;     //身高,单位cm
   unsigned int weight;     //体重,单位kg
   unsigned int gender;     //性别,0表示女性,1表示男性
};

struct human_t human1;  //定义一个实体human1

//计算struct human_t结构体类型占内存的大小
int a = sizeof(struct human_t);

//也可以使用sizeof计算human1这个变量得到struct human_t结构体类型占的内存大小。
int a = sizeof(human1);

//因为
struct human_t{
   unsigned int age;        //占4和字节
   unsigned int height;     //占4和字节
   unsigned int weight;     //占4和字节
   unsigned int gender;     //占4和字节
};

//age占4和字节 + height占4和字节 + weight占4和字节 + gender占4和字节 = 32个字节。
所以我们使用sizeof计算struct human_t占32个字节。

你可能感兴趣的:(C语言,c语言,开发语言)