int *(*)(int *)用c语言表示什么?

时间:2018-12-24 20:36:04

标签: c pointers function-pointers

任何人都可以用 C语言确切解释这种类型int * (*) (int *)的含义吗?

谢谢

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

您必须阅读有关读取C磁偏角的“左右”规则。 这是提供说明的链接。与其给予帮助,不如帮助您自己学习练习的内容。 http://cseweb.ucsd.edu/~ricko/rt_lt.rule.html