一、整型
①有符号整型
有符号整型 | 关键字 | 变量声明实例 | 字符长度 |
---|---|---|---|
有符号短整型 | short | short int a; 或者 short a; | 2 byte |
有符号基本整型 | int | int a; | 4 byte |
有符号长整型 | long | long int a; 或者 long a; | 4 byte |
有符号长长整型 | long long | long long int a; 或者 long long a; | 8byte |
②无符号整型
无符号整型 | 关键字 | 变量声明实例 | 字符长度 |
---|---|---|---|
无符号短整型 | unsigned | unsigned int a; | 4 byte |
无符号基本整型 | unsigned | unsigned long b; | 8 byte |
无符号长整型 | unsigned | unsigned short c; | 16 byte |
二、实型
又称“浮点型”
实型 | 关键字 | 变量声明实例 | 字节长度 |
---|---|---|---|
单精度实型 | float | float a; | 4byte |
双精度实型 | double | double a; | 8byte |
长双精度实型 | long double | long double a; | 12byte |
三、字符型
数据类型 | 关键字 | 变量声明实例 | 字节长度 |
---|---|---|---|
字符型 | char | char a; | 1byte |
注意: 字符型只是描述单个字符,C语言中没有提供字符串的数据类型,因此字符串的存取要用字符串数组来实现。
四、枚举型
枚举即”一一例举“之意,当某些量仅由有限个数据值组成时,通常用枚举类型来表示。
枚举数据类型描述的是一组整型值的集合,需用关键字 enum 来定义
enum response{no,yes,none};//声明了名为response的枚举变量,它可能取值no、yes、none
enum response answer;//定义了一个response枚举类型变量answer
//使用方式
//1. 给变量answer赋值,只能是定义的no、yes、none三个值之一
answer=no;
//2. 可在条件语句中使用
if(answer==yes){
...
}
五、构造类型
构造类型是由基本数据类型按一定规则组合而成的复杂数据类型,包括 数组型、结构体类型 和 共用体类型。
①数组
数组是由相同类型的数据构成的一种数据结构,适合于对具有相同属性的数据进行批处理。
int score[10];
char name[20];
②结构体
结构体将不同类型的数据成员组织到统一的名字之下,适合对于关系紧密、逻辑相关、具有相同或不同属性的数据进行处理。
struct date{
int year;
int mouth;
int day;
};
③共用体
共用体也能表示逻辑相关的不同类型的数据集合,但其数据成员是情形互斥的,每一时刻只有一个数据成员起作用。
union{
int single;
char spouseName[20];
struct date divorcedDay;
};
补充:结构体变量内存分配问题
- 结构体类型所占内存的字节数并非是所有成员所占内存字节的总和,它不仅与所定义的结构体类型有关,还与计算机系统本身有关。
- 计算结构体所占内存的字节数: sizeof() 方法 使用 sizeof(变量名) 的形式可以计算一个变量所占内存的字节数。
六、指针类型
指针类型是一种更加灵活的数据类型,用来表示内存地址,具有指针类型的变量,称为指针变量 。
//1. 指针变量的类型声明
int *ptr;
char *pStr;
//2. 指针变量的初始化
ptr=&a;
pStr=&b;//&为取地址运算符,用于获取变量a的地址(a变量在内存中所占空间的首地址)
注意: 指针变量中存放的虽然是变量的地址值,二者在数值上相等,但在概念上变量的指针并不等同于变量的地址。变量的指针是一个常量,不能对其赋值,而变量的指针是一个变量,其值是可以改变的。
七、空类型
空类型是从语法完整性角度给出的数据类型,表示不需要数据值,因而没有类型,其一般使用关键字void描述。
void Sort(int array[],int n);
void *malloc(unsigned int size);