1、一个整型数 int a;
2、一个指向整型数的指针:int *a;
3、一个指向指针的指针,它指向的指针是一个整型数 int **a;
4、一个有10个整型数的数组 :int a[10];
5、一个有10个指针的数组,该指针是指向一个整型数:int *a[10];
6、一个指向有10个整型数组的指针:(*a)[10];
7、一个指向函数的指针,该函数有一个整型参数并返回一个整型数(*a)(int);
8、一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型:int (*a[10])(int);
右左法则简述;从变量开始先向右看,遇到圆括号就向左看,[]是数组,()是函数。
练习题目:
int *( *( *arr[5])())();
解析:arr这是一个指针数组,数组里的元素是指针,指针指向一个函数,该函数形参为空,返回值为指针,指向一个函数,形参为空,返回值为int *。
float ( * ( *b()) [] )();
解析:b这是一个函数,函数返回值为空,返回值为指针,指针指向一个数组,数组里元素为指针,指针指向一个函数,函数形参是空,返回值是float。
void * ( *c) ( char a, int (*b)());
解析:c这是一个指针变量,指向一个函数,函数形参有两个,一个是字符型的变量a,另一个是整型函数指针变量,返回值为void *。
float ( * ( * e[10]) (int *) ) [5];
解析:e这是一个数组,数组里是指针,指向一个函数,函数形参为int *,返回值是一个指针,指向一个数组,数组的元素类型为float。