我想将一个函数作为参数传递,但是我是否应该使用&字符来传递它感到困惑。以下代码段可同时使用两种方式。为什么?
#include <stdio.h>
int print(int pas){
return pas;
}
int func_print(int (*k)(int)){
(*k)(555);
}
int main(){
printf("%d",func_print(print));
printf("%d",func_print(&print));
return 0;
}
答案 0 :(得分:1)
功能名称很特殊。
在不调用函数的情况下使用时,它将自动转换为指向该函数的指针。因此,&print
,print
,*print
,**print
,***print
等都将得出类型为int (*)(int)
的相同表达式。