C语言中复杂的声明
C允许用户自定义数据形式。
虽然我们常用一些简单的数据形式,但是根据需要有时候会用到复杂的形式。
那么久会涉及定义一些复杂的声明。定义复杂声明之前,就必须能看懂复杂的声明。
这就需要了解一些规则和约定:
符号 含义
* 表明一个指针
() 表明一个函数
[] 表明一个数组
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
规则:
1、[]和()的优先级相同,遵循从左往右结合律;
2、[]和()的优先级比*高。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
例子:
int * risks[10]; //risks是一个指针数组,而不是一个指向数组的指针;
int (* risks)[10]; //risks是一个指向数组的指针;
int (* uuf)[3][4]; //圆括号使得*先和uuf结合,说明uuf是一个指针,指向二维数组的指针;
char * fump(int); //返回字符指针的函数;
char (* frump)(int); //指向函数的指针,该函数的返回类型为char;
char (* flump[3])(int); //内含3个指针的数组,每个指针都指向返回类型为char的函数,该函数的参数是一个int类型;
知行合一