int * ( * ) ( int * ) 这个类型在c语言中代表什么?

what does this type int * ( * ) ( int * ) represent in c language?

谁能解释一下这种类型在 C 语言中的确切含义int * (*) (int *)

谢谢,

除非int定义为宏,否则int * (*) (int *)既不包含任何常量也不包含任何标识符,因此它不能是表达式。相反,它是 类型 。具体来说,它是一种指向函数的指针类型,该函数接受一个类型为 int * 的参数,而 returns 是一个类型为 int * 的值。例如,它与指向此函数的指针兼容:

int *foo(int *x) {
    return x + 1;
}

您可以在类型转换表达式中使用它,例如在这个人为的示例中:

int *(*p)() = foo;
int *(*p2)(int *) = (int * (*)(int *)) p;
// here ------------^^^^^^^^^^^^^^^^^^

这个

int * (*) (int *); /* not valid expression */

不是 C 中的有效语法。你可能想知道

int * (*func) (int *); /* valid : function pointer declaration */

其中 func 是一个 函数指针 ,可以指向一个函数,该函数采用 int* 类型的输入参数并且 returns int*.

您必须阅读有关阅读 C 声明的 "left-right" 规则。 这里是link提供的说明。这不是给答案,而是帮助您学习自己练习的东西。 http://cseweb.ucsd.edu/~ricko/rt_lt.rule.html