一些比较复杂的声明实例(C Primer Plus中的例子)
数组后面的[]
和函数名后面的()
具有相同的优先级,它们比*
的优先级高。
都是从左往右结合。
int board[8][8];
int ** ptr;
//一个指向指针的指针,每个元素都是一个指向int的指针
int * risk[10];
//内含10个元素的数组,每个元素都是一个指向int的指针
int (* rusks)[10];
//一个指向数组的指针,该数组内含有10个int类型的值
int * oof[3][4];
//一个二维数组,每个元素都是指向int的指针
int (* uuf) [3][4];
//一个指向3*4二维数组的指针,该数组内含有int类型值
int (* uof[3]) [4];
//一个内含三个指针元素的数组,每个指针都指向数组,该数组内含有4个int型
//指针,pr,pg都是指向float类型变量的指针
float * pr,* pg;
//函数指针
char * fump(int);
char (* frump)(int);
char (* flump[3]) (int);
函数指针常用作另一个函数的参数,告诉该函数要使用哪一个函数。
声明函数指针:先声明一个该类型的函数,再把函数名替换为(* pf)形式的表达式。pf就成为指向该类型函数的指针。