修饰符 | 含义 |
* | 表示一个指针 |
() | 表示一个函数 |
[] | 表示一个数组 |
C允许使用多个修饰符,这就使得可以创建如下各种各样的类型:
int board[8][8]; // int数组的数组 int **ptr; // 指向int的指针的指针 int *risks[10]; // 具有10个元素的数组,每个元素是一个指向int的指针 int (* risks)[10]; // 一个指针,指向具有10个元素的int数组 int * oof[3][4]; // 一个3*4的数组,每个元素是一个指向int的指针 int (* uuf)[3][4]; // 一个指针,指向3*4的int数组 int (* uof[3])[4]; // 一个具有3个元素的数组,每个元素是一个指向具有4个元素的int数组的指针
修饰符的使用规则:
1. 表示一个数组的[]和表示一个函数的()具有相同的优先级,且高于间接运算符*的优先级。
int * risks[10]; // risks是一个指针数组,而不是指向数组的指针
2. []和()都是从左到右进行结合的。
int goods[12][50]; // goods是一个由12个具有50个int值的数组结构组成的数组,而不是一个由50个具有12个int值的数组结构组成的数组
3. ()还可以解释成普通的圆括号。
int (* rusks)[10]; // risks是一个指向数组的指针 int * oof[3][4]; // oof是一个具有3*4个int *类型元素的二维数组 int (* uuf)[3][4]; // uuf是一个指向具有3*4个int类型元素的二维数组的指针
使用typedef建立一系列相关的类型:
typedef int arr5[5]; typedef arr5 * p_arr5; typedef p_arr5 arrp10[10];