1.基本数据类型(基于32位系统):
类型说明符 字节 数值范围
字符 char 1 C字符集
基本整型 int 4 -214783648~214783647
短整型 short int 2 -32768~32767
长整型 long int 4 -214783648~214783647
无符号型 unsigned 4 0~4294967295
无符号长整型 unsigned long 4 0~4294967295
单精度型 float 4 3/4E-38~3/4E+38
双精度型 double 8 1/7E-308~1/7E+308
注意:数据类型占用的字节依赖硬件及编译环境,如long int 在32位系统下占用了4字节,而在64位系统则是8字节
2.枚举:
概念:有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有7天,C语言提供了“枚举”类型
枚举变量的说明:
enum weekday{SUN = 0, MON, TUE, WED, THU, FRI, SAT}; //默认MON = 1, TUE = 2 ~ SAT =6
3.结构体
概念:一组数据往往具有不同的数据类型,不能用一个数组来存放,为了解决此问题,C语言引入了“结构体”,用来表示多种数据类型
例1:
struct date
{
int month;
int day;
int year;
};
struct date birthday;
//先定义结构,再说明结构变量
例2:
struct student
{
int num;
char name[20];
char sex;
float score;
struct date birthday;
}
struct student boy1,boy2;
//结构体变量成员也定义为结构变量(结构体嵌套)
例3:
typedef struct student
{
int num;
char name[20];
char sex;
float score;
struct date birthday;
};ST_STU
ST_STU boy[2];
//结构体变量数组
4.联合体
概念:联合把几种不同类型的数据存放于同一段内存。联合可以节省内存空间,但联合的各成员不能同时出现,
即在任一时刻只有一个成员起作用,除非明确变量间的关系不会互相影响,否则建议不要随意使用联合体。
联合体的使用要谨慎,主要有如下形式:
typedef union
{
unsigned int dword_ipv6[4];
unsigned char byte_ipv6[16];
}IPv6;
//IPv6 16字节 128比特位
5.typedef
概念:typedef用于定义类型说明符,相当于为数据类型取“别名”。使用typedef可提高程序的可读性和可维护性
例:
typedef char CHAR8; CHAR8 str[16]; //等价于 char str[16]
typedef int INT32; INT32 a,b; //等价于 int a,b;
typedef struct str {…}STU_S; STU_S stTest; //等价于 struct stu stTest
注意:不要使用define 替代 typedef
反例:
#define D_INT32 int*
D_INT32 ptr_a,ptr_b; //宏展开为int *ptr_a,ptr_b; 实际只定义了一个指针变量ptr_a,而ptr_b数据类型为int
//正确写法为:
typedef int* T_INT32
T_INT32 ptr_c,ptr_b;