char *ptr;
//ptr是一个指向char型数据的指针
//ptr指名称是ptr
//*指ptr是一个指向...的指针
char const *ptr;
//ptr是一个指向char型const常量数据的指针
//char const指char型的const常量
const char *ptr;
//ptr是一个指向char型const常量数据的指针
//const char指char型的const常量
//等价于char const *ptr;
char * const ptr;
//ptr是一个指向char型数据的指针常量
//*const指指向...的指针常量
char * const *ptr;
//ptr是一个指向一个char型数据的指针常量的指针(从后向前分析)
//ptr指名称是ptr
//*指ptr是一个指向...的指针
//*const指指向...的指针常量
/char指char型数据
int demo1(int);
//demo1是一个带有一个int型参数,返回值为int类型的函数
//demo1指名称是demo1
//int (int);指demo1是一个函数,参数是int,返回值int
int *demo2(int);
//*demo2是一个带有一个int型参数,返回值为一个指向int类型数据的指针
//demo2指名称是demo2
//* (int);指demo2是一个函数,参数是int,返回一个指向...的指针
//int指int型数据
int (*demo2)(int);
//demo2是一个指向函数的指针,函数有一个int类型参数,返回一个int类型数
//名称是demo2,demo2是一个...
//*指指向...的指针
//int ( )(int);指一个函数,参数是int,返回一个int类型数据
int (*demo3(int))(void);
//demo3是一个带有一个int型参数,返回值为一个没有参数的函数,函数返回值为int的函数指针
//demo3指名称是demo3
//* (int)指demo3是一个函数,参数是void,返回一个指向...的指针
//int ( )(void);指一个参数是void,返回一个int型数据的函数
int (*(*demo4)(int))(void);
//demo4是指向一个带有一个int型参数,返回一个无参数返回值为int的函数指针的函数的指针
int (*(*demo5[10])(int))(void);
//demo5是一个有10个函数指针为元素的指针数组,指针数组元素指向的函数是带有一个int型参数,返回一个无参数返回值为int型的函数指针的函数
//demo5指名称是demo5
//[10]指demo5是一个有10个...类型数据元素的数组
//*指指向...的指针类型
//*( )(int)指一个参数为int,返回一个指向...的指针类型数据的函数
//int( )(void);指一个无参数,返回一个int型数据的函数
int (*(*(*demo6)[10])(int))(void);
//demo6是一个指向有10个函数指针为元素的数组的指针,指针数组元素指向的函数是一个int型参数,返回一个无参数返回值为int型的函数
//demo6指名称是demo6
//*指demo6是一个指向...的指针
//*( )[10]指有10个元素的数组,数组元素是指向...的指针类型
//*( )(int)指一个函数,参数是int,返回一个指向...的指针
//int ( )(void);指一个函数,无参数,返回一个int类型的数据
/*注:
int *arr[4];是一个一维数组,数组的每一项都是一个指向int的指针
int (*arr)[4];是一个二位数组的首地址,相当于int arr[n][4]中的arr
*/
int (*(*(*demo7)[10])(void (*cb)(int)))(void);
//demo7是一个指向有10个函数指针为元素的数组的指针,指针数组元素指向的函数是以一个带一个int型参数返回为空的函数指针为参数,返回一个无参数返回值为int型的函数
//*( )( ... )指一个函数,参数是...,返回值为一个指向...的指针
//*( )( * )指一个函数,参数是一个指向...的指针,返回值为一个指向...的指针
//*( )(void ( )(int))指一个函数,参数是一个指向一个函数(参数int,返回为空)的指针,返回值为一个指向...的指针
int (*(*(*const demo8)[10])(void (*cb)(int)))(void);
//demo8是一个指向有10个函数指针为元素的数组的指针常量(指针不可变),指针数组元素指向的函数是以一个带一个int型参数返回为空的函数指针为参数,返回一个无参数返回值为int型的函数
int * const * (*(*demo9)[10])(void (*cb)(int));
//demo9是一个指向有10个函数指针为元素的数组的指针,指针数组元素指向的函数是以一个带一个int型参数返回为空的函数指针为参数,返回一个指向一个int类型数据的指针常量的指针类型的函数
//* 指参数是一个指向...的指针
//* const指指向...的指针常量
int * const * (*(*demo10)[10])(int (*(*cb)(int))[10]);
//demo10是一个指向有10个函数指针为元素的数组的指针,指针数组元素指向的函数是以一个函数指针(参数为int型,返回为一个指向含10个元素的int型数组的指针)为参数,返回一个指向一个int类型数据的指针常量的指针类型的函数
//(*( )(int))指一个函数,参数是int,返回一个指向...的指针
//(int ( )[10])指一个有10个元素的数组,数组元素类型是int