一、基本数据类型
C语言中的基本数据类型包括整型、浮点型、字符型和布尔型。
1. 整型
整型分为有符号整型和无符号整型。有符号整型包括:char
、short
、int
和 long
四种类型。无符号整型包括:unsigned char
、unsigned short
、unsigned int
和 unsigned long
四种类型。下面是一个整型变量的定义示例:
int a; // 定义一个有符号整型变量a
unsigned int b; // 定义一个无符号整型变量b
2. 浮点型
浮点型分为单精度浮点型(float
)和双精度浮点型(double
)两种类型。常用的是双精度浮点型。下面是一个浮点型变量的定义示例:
double c; // 定义一个双精度浮点型变量c
3. 字符型
字符型用于表示单个字符,使用 char
类型定义。下面是一个字符型变量的定义示例:
char d; // 定义一个字符型变量d
4. 布尔型
布尔型代表“真”或“假”这两个值,使用 _Bool
类型定义。下面是一个布尔型变量的定义示例:
_Bool e; // 定义一个布尔型变量e
二、复合数据类型
复合数据类型包括数组、结构体和枚举类型。
1. 数组
数组是一组同类型的数据元素的集合,使用数组名和下标表示数组中的元素。下面是一个整型数组的定义示例:
int array[10]; // 定义一个包含10个元素的整型数组
2. 结构体
结构体是一种自定义的数据类型,可以把不同类型的数据组合成一个整体。下面是一个结构体的定义示例:
struct student {
char name[20]; // 姓名
int age; // 年龄
char gender; // 性别
};
struct student stu; // 定义一个结构体变量stu
3. 枚举类型
枚举类型用于定义一组常量。下面是一个枚举类型的定义示例:
enum color {
RED, BLUE, GREEN
};
enum color c = RED; // 定义一个枚举类型变量c,并初始化为RED
三、指针类型
指针类型用于存储变量的内存地址,可以用来获取或修改变量的值。下面是一个指针类型变量的定义示例:
int a = 10;
int *p = &a; // 定义一个指向整型变量a的指针变量p
四、常量类型
常量类型分为字面常量和符号常量两种类型。
1. 字面常量
字面常量包括整型常量、浮点型常量、字符常量和布尔常量。下面是一个整型常量的定义示例:
int a = 10; // 定义一个整型常量a,值为10
2. 符号常量
符号常量使用 #define
指令定义,可以使用符号常量代替常量值。下面是一个符号常量的定义示例:
#define PI 3.14159 // 定义一个圆周率符号常量PI
const int MAX_SIZE = 100; // 定义一个最大长度常量MAX_SIZE
五、类型限定符
类型限定符用于对变量进行修饰,包括 const
、volatile
、restrict
和 _Static_assert
。
1. const
限定符
const
限定符用于指示变量是只读的,不允许修改变量的值。下面是一个 const
限定符的定义示例:
const int a = 10; // 定义一个只读的整型常量a
2. volatile
限定符
volatile
限定符用于指示变量的值可以被随时修改,例如在中断服务程序中。下面是一个 volatile
限定符的定义示例:
volatile int flag = 0; // 定义一个用于中断服务程序的标志变量flag
3. restrict
限定符
restrict
限定符用于指示指针所指向的内存区域没有别的别名。下面是一个 restrict
限定符的定义示例:
void copy(int * restrict dest, const int * restrict src, size_t n) {
for (size_t i = 0; i < n; i++) {
dest[i] = src[i];
}
}
4. _Static_assert
限定符
_Static_assert
限定符用于在编译时进行断言检查,如果表达式为假,则编译器会输出错误信息。下面是一个 _Static_assert
限定符的定义示例:
_Static_assert(sizeof(int) == 4, "int类型必须占用4个字节的内存");