近来翻阅一本关于C++的书籍,上面有关于标题内容的论述,并举了几个例子,特写下来与大家共享:
/* 1 */ void * (*(*fp1)(int))[10];
首先(*fp1)(int)为一个指向函数的指针,该函数的返回值为b, 转换为void*(*b)[10], b为指向c指针,
void*c[10], c为指针数组,类型为void.因此全部结合后可以看作是 fp1是一个指向函数的指针,该
函数接受int型的变量,返回一个指向void类型的指针数组的指针。
/* 2 */ float(*(*fp2)(int, int, float))(int);
同样在本例中(*fp2)(int, int, float)定义的是一个函数指针,函数的返回值为b, 上式为float(*b)(int)
显然b是一个函数指针,综述为:fp2是一个参数类型为int int float的函数指针,该函数的返回值是一个
指向参数为int 型返回值为float类型的函数指针。
/* 3 */ double(*(*(*fp3)())[10])();
(*fp3)()为函数指针,函数的返回值为b, double(*(*b)[10])(), double(*c[10])()为一个指针数组, 每一个指针指向函数。综述为fp3为参数列表为空的函数指针,该函数返回值类型为一个指针,该指针 指向参数为空,返回值为double的函数指针数组。 /* 4 */ int (*(*f4())[10])(); 这个例子不同于上面的情况,f4()为函数,返回值为b, int(*(*b)[10])(), int(*c[10])(), 综述为f4是 一个返回指针的函数,该指针指向参数为空返回值为int型的函数指针的数组。