任何人都可以用 C语言确切解释这种类型int * (*) (int *)
的含义吗?
谢谢
答案 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