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
![]()