0
我看到这个在http://en.cppreference.com/w/cpp/language/function函数参数声明的含义是什么?
int f(int a, int *p, int (*(*x)(double))[3]);
什么的int (*(*x)(double))[3]
意思?
我看到这个在http://en.cppreference.com/w/cpp/language/function函数参数声明的含义是什么?
int f(int a, int *p, int (*(*x)(double))[3]);
什么的int (*(*x)(double))[3]
意思?
(*x)
确保x
是一个指针,然后(*x)(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;
}
[cdecl](http://cdecl.org)的救援? – tadman