传递函数作为参数,带有和不带有“&”号

时间:2018-08-22 14:53:33

标签: c function parameters

我想将一个函数作为参数传递,但是我是否应该使用&字符来传递它感到困惑。以下代码段可同时使用两种方式。为什么?

#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;
}

1 个答案:

答案 0 :(得分:1)

功能名称很特殊。

在不调用函数的情况下使用时,它将自动转换为指向该函数的指针。因此,&printprint*print**print***print等都将得出类型为int (*)(int)的相同表达式。