1、typedef 固定长度数组
Array5
是一个类型名,代表 长度为 5
的 int
数组。
typedef int Array5[5];
Array5
是一个类型名,代表 长度为 5
的 int
数组,相当于int a[5] = {1, 2, 3, 4, 5};
。可以这样使用。
#include <stdio.h> typedef int Array5[5]; // 定义一个类型名 Array5,表示长度为 5 的 int 数组 int main() { // 创建一个 Array5 类型的数组,并初始化 Array5 a = {1, 2, 3, 4, 5}; // 打印数组元素 for (int i = 0; i < 5; i++) { printf("a[%d] = %d\n", i, a[i]); } return 0; }
2、二维数组
可以使用typedef
固定长度的二维数组。
#include <stdio.h> typedef int Matrix3x3[3][3]; int main() { // 定义并初始化 3x3 矩阵 Matrix3x3 mat = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 输出矩阵元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("%d ", mat[i][j]); } printf("\n"); } return 0; }
3、用于函数参数
可以把 typedef
用在函数参数中以增强可读性。
#include <stdio.h> typedef int Row[5]; // 打印一个 Row 类型的数组 void print_row(Row r) { for (int i = 0; i < 5; ++i) { printf("%d ", r[i]); } printf("\n"); } int main() { // 定义并初始化 Row 类型的数组 Row row = {1, 2, 3, 4, 5}; // 调用 print_row 函数打印该行 print_row(row); return 0; }
4、组织结构体中的数组
在结构体中使用固定长度数组时,typedef
可以使代码更具可读性,尤其是当结构体中包含多个数组时。
#include <stdio.h> // 定义长度为 3 的整数数组类型 typedef int Row[3]; // 定义一个结构体,包含多个 Row 类型的数组 typedef struct { Row row1; Row row2; } Matrix; int main() { Matrix m = {{{1, 2, 3}, {4, 5, 6}}}; printf("%d\n", m.row1[0]); // 输出 1 printf("%d\n", m.row2[2]); // 输出 6 return 0; }