我发现了这个奇怪的变量声明
float (*x[20])(*int a);
Run Code Online (Sandbox Code Playgroud)
它可能意味着什么?
它的目的是什么?
hac*_*cks 12
float (*x[20])(*int a)是不正确的.它应该float (*x[20])(int *a)声明x为一个20个指针的数组,该函数接受一个int *类型的参数并返回float.
对于那些想知道使用函数指针数组的人:
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; }
Run Code Online (Sandbox Code Playgroud)
这里讨论如何读取/解密这种复杂声明的详细说明.