我在某个地方发现了这个奇怪的变量声明

float (*x[20])(*int a);

这可能意味着什么?
它的目的是什么?

最佳答案

float (*x[20])(*int a)不正确。它应该是float (*x[20])(int *a)它将x声明为20个指针的数组,指向接受int *类型参数并返回float的函数。
对于那些想知道函数指针数组的use的人:

typedef double Func(double, double);          // Declare a double (double, double)

Func sum, subtract, mul, divide;              // Function prototypes.
Func *p[] = { sum, subtract, mul, divide };   // Array of function pointers

int main(void)
{
    double result;
    double a, b;
    int option;
    printf("This is a simple calculator to add, subtract, multiply and divideide two integers\n");
    printf("Enter two integers: ");
    scanf("%lf %lf", &a, &b);

    printf("Choose an option:\n 1. Add\n 2. Subtract\n 3. Mult\n 4. Divide\n");
    scanf("%d", &option);

    result = p[option - 1](a, b);
    printf("result = %lf\n", result);
}

double sum(double a, double b) { return a+b; }
double subtract(double a, double b) { return a-b; }
double mul(double a, double b) { return a*b; }
double divide(double a, double b) { return a/b; }

对如何读取/解密这种复杂的声明进行了详细的解释。

关于c - 此声明“float(* x [20])(* int a)”意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35030288/

10-14 15:18
查看更多