什么是函数参数声明的含义?

时间:2016-11-27 23:40:51

标签: c++ c++11

我在http://en.cppreference.com/w/cpp/language/function

中看到了这一点
int f(int a, int *p, int (*(*x)(double))[3]);

int (*(*x)(double))[3]的含义是什么?

1 个答案:

答案 0 :(得分:2)

(*x)确保x是一个指针,然后(*x)(double)将为我们提供一个函数指针,其参数为double,下一个为(*(*x)(double)),这意味着该函数将返回一个指针ppint 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;
}