前言提示:
采用的编译器是Dev C++
sizeof是一种用于计算数据类型占用的字节数的函数;printf是格式化输出函数.
计算各种数据类型的占用字节,运行代码如下:
#include<stdio.h>
int main()
{//所有的变量都需要先用一个数据类型定义,才能使用
int a;
double b;
float c;
long d;
long long e;
short f;
char g;
struct Day{
char T;
int o;
char t;
}Daily;//定义结构体
union tal{
struct Day;
short A;
}Dat;//定义共用体
int *p;
short *o;
char *l;
printf("short *= %d\n",sizeof(short *));
printf("int *= %d\n",sizeof(int *));
printf("char *=%d\n",sizeof(char *));
printf("short = %d\n",sizeof(short));
printf("int = %d\n",sizeof(int));
printf("long = %d\n",sizeof(long));
printf("long long = %d\n",sizeof(long long));
printf("double = %d\n",sizeof(double));
printf("char = %d\n",sizeof(char));
printf("struct Day = %d\n",sizeof(struct Day));
printf("float = %d\n",sizeof(float));
printf("union tal=%d\n",sizeof(union tal));
printf("long double = %d\n",sizeof(long double));
return 0;
}
运行结果如下:
归纳基本数据类型
基本数据类型 | 占用的字节数 |
字符型 char | 1 |
整型 int | 4 |
短整型 short | 2 |
单精度浮点型 float | 4 |
双精度浮点型 double | 8 |
长整型 long (long int) | 4 |
结构数据类型 | 字节数 |
指针类型 | 8 |
结构体 | 由成员字节数和成员顺序有关 |
共用体 | 取决于成员变量中最大的字节数 |
结构数据类型
结构数据类型 | 字节数 |
指针类型 | 8 |
结构体 | 由成员字节数和成员顺序有关 |
共用体 | 取决于成员变量中最大的字节数 |
结构体变量的数据类型字节数是由结构体的成员放置顺序和结构体成员的字节共同决定的。
第一种结构体
struct Day{
int o;
char t;
int r;
}Daily;
运行结果
第二种结构体
struct Day{
char T;
int o;
char t;
}Daily;
运行结果如下:
第三种结构体
struct Day{
int o;
char t;
char r;
}Daily;
运行结果如下:
总结:
结构体的字节数与结构体的结构变量成员的字节数和成员的排放顺序有关。
结构变量的存储就可以理解为一种顺序存储
以最大字节数的变量作为标准,按照顺序存储
遵循地址对齐的原则
共用体的字节数取决于最大的基本数据类型的成员变量字节数;
union tal{
struct Day;
short A;
int r;
}Dat;
运行结果如下:
union tal{
struct Day;
short A;
int r;
double G;
}Dat;
运行结果如下: