C奇特的声明

声明时可以使用的修饰符
修饰符 含义
* 表示一个指针
() 表示一个函数
[] 表示一个数组

 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]; 
原文地址:https://www.cnblogs.com/qwertWZ/p/2869544.html