我在http://en.cppreference.com/w/cpp/language/function
中看到了这一点int f(int a, int *p, int (*(*x)(double))[3]);
int (*(*x)(double))[3]
的含义是什么?
答案 0 :(得分:2)
(*x)
确保x
是一个指针,然后(*x)(double)
将为我们提供一个函数指针,其参数为double,下一个为(*(*x)(double))
,这意味着该函数将返回一个指针p
和p
由int int (*p)[3]
描述,它最终为我们提供了指向int[3]
总而言之,我们这里有一个指向函数的指针,该函数的单个参数是double,函数返回一个指向int [3]数组的指针。
这是一个展示它的简单示例,希望它可以提供帮助。
#include <iostream>
using namespace std;
typedef int int3[3];
int arr3[3]{1, 2, 3};
int3 * get3Int(double x){
int (*arr)[3] = &arr3;
return arr;
}
int testFunctionPointer(int (*(*x)(double))[3]){
int (*arr)[3] = x(1.0);
for(auto n: *arr)
cout<<n<<endl;
return 0;
}
int main(){
testFunctionPointer(get3Int);
return 0;
}