我想传递一个函数作为参数,但我很困惑是否应该用&符号传递它。以下代码片段以两种方式起作用。为什么?
#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;
}
最佳答案
函数名称很特殊。
当在不调用函数的情况下使用时,它会自动转换为指向函数的指针。所以 &print
、print
、*print
、**print
、***print
> 等都计算为 int (*)(int)
类型的相同表达式。
关于c - 将函数作为参数传递,带或不带 & 符号 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51969619/