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
谁能解释一下这种类型在 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