函数指针定义解读

原则:从中间开始到两边结束 中间开始指的是从中间定义的变量开始, 到两边结束:指的是从中间变量开始先右后左的原则依次解读 sample: void (*pFuncPtr)() 中间开始:定义一个pFuncPtr, 先右后左,右边是个右括号,忽略之, 左边是个*说明pFuncPtr是个指针,然后右边是个(), 说明指针指向一个没有参数的函数,然后在左边是void说明指向 的函数的返回类型是void “从中间开始” (pFuncPtr是一个…), 到右边(无意义的右括号), 左边“*”(指针,指向。。。), 右边-空的参数列表(“ 一个没有参数的函数), 左边void(pFuncPtr是一个指针, 指向带无参的返回类型为void函数) void *pFuncPtr() pFuncPtr是一个没有参数的函数,返回类型为void* 复杂的声明和定义 1。 void * (*(*fp1)(int))[10] fp1是一个函数指针, 指向点一个int参数的函数,该函数返回一个指针,该指针指向一个有10个void*指针元素的数组 2. float (*(*fp2)(int, int, float))(int); fp2是一个函数指针,指向一个参数列表为(int, int, float)的函数,该函数返回一个函数指针,指向一个参数为(int)返回类型为float的指针 3. typedef double (*(*(*fp3)())[10])(); fp3 a; fp3是一个函数指针指向一个无参的函数, 返回类型是一个指针,指向一个有十个数组的元素,其中每个元素是一个函数指针指向一个没有参数的返回类型 为double的函数 4 int (*(*f4())[10])(); f4是一个函数返回一个指针,指向一个有十个元素的数组,每个数组元素为一个函数指针,指向一个带无参返回类型为int的函数