1 #include<stdio.h> 2 /* “右左法则”: */ 3 //*p3 指针 4 //(*p3)() 函数指针 函数参数列表为() 5 //*(*p3)() 函数指针 函数参数列表为()、返回值类型为指针 6 //(*(*p3)())[10] 数组指针 指针为函数指针 函数参数列表为()、返回值类型为指针 7 //double(*(*p3)())[10]() 数组指针 指针为函数指针 函数参数列表为()、返回值类型为指针 指针为函数指针函数 函数参数列表为()、返回类型为double 8 9 /* 函数返回值类型 (* 指针变量名) (函数参数列表);格式拆分 */ 10 //(*p3)()是(* 指针变量名) (函数参数列表) 相邻的()是隔开返回类型用的,不是优先级的() 11 //double(* (*)[10] )()是返回值类型 类型是一个数组指针 数组元素有10个、元素类型是指针 指针为函数指针 函数参数列表为()、返回类型为double 12 typedef double(* (* (*p3)() )[10] )(); 13 int main(){ 14 /* “右左法则”: */ 15 //(*p1(int)) 函数指针 16 //*(*p1(int)) 函数指针 函数返回类型为指针、参数列表为(int) 17 //void*(*p1(int)) 函数指针 函数返回类型为指针、参数列表为(int) 指针类型为void 18 //void*(*p1(int))[10] 函数指针数组 函数返回类型为指针、参数列表为(int) 指针类型为void 19 20 /* 函数返回值类型 (* 指针变量名) (函数参数列表);格式拆分 */ 21 //(*p1(int))中*p1(int)是(* 指针变量名) (函数参数列表),最外面的()是隔开返回类型的标志 22 //void*是函数指针返回类型 23 void* ( *p1(int) ) [10];//函数指针为void* (*(p1) (int)) 24 25 26 27 /* “右左法则”: */ 28 //*p2 指针 29 //(*p2)(int,int,float) 指针 指针类型为函数 函数参数列表为(int,int,float) 30 //*(*p2)(int,int,float) 指针 指针类型为函数 函数参数列表为(int,int,float)、返回类型为指针 31 //float(*(*p2)(int,int,float))(int) 指针 指针类型为函数 函数参数列表为(int,int,float)、返回类型为指针 指针为函数指针 参数列表为(int)返回类型为float 32 33 /* 函数返回值类型 (* 指针变量名) (函数参数列表);格式拆分 */ 34 //float(*)(int):这是函数的返回类型,类型是返回类型为float、参数列表为int的函数指针 35 //(*p2)中的*是函数指针变量名前的标志,p2是函数指针的变量名,参数列表是(int) 36 float(* (*p2)(int,int,float) )(int); 37 38 39 40 //p4() 函数 41 //*p4() 函数指针 42 //*(*p4()) 函数指针 返回类型为指针 43 //*(*p4())[10] 指针数组 数组的元素为函数指针 函数指针的返回类型为指针 44 //int(*(*p4())[10])() 指针数组 数组的元素为函数指针 函数指针的返回类型为指针 指针的类型为函数指针 函数指针返回值类型为int 参数列表为() 45 46 /* 函数返回值类型 (* 指针变量名) (函数参数列表);格式拆分 */ 47 //int(*)()返回值类型 48 //(*p4())是函数指针,注意:这里的()是函数指针隔开返回类型的格式()不是运算优先级的括号 49 //[10]是数组元素个数 50 int(* (*p4()) [10] )(); 51 return 0; 52 }
标签:p3,typedef,int,double,列表,函数参数,类型,函数指针,指针 From: https://www.cnblogs.com/xuweihui/p/17700606.html