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;
}