c - 将函数作为参数传递,带或不带 & 符号 c

标签 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;
}

最佳答案

函数名称很特殊。

当在不调用函数的情况下使用时,它会自动转换为指向函数的指针。所以 &printprint*print**print***print > 等都计算为 int (*)(int) 类型的相同表达式。

关于c - 将函数作为参数传递,带或不带 & 符号 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51969619/

相关文章:

java - 一个接口(interface)只能实现一个参数化——如何解决?

c - 错误 "X may be used uninitialized in this function"

c - 如何在 C 代码中模拟动态显示

c - 如何使用 Visual Studio 2017 只编译 C 代码而不考虑 C++?

c++ - 有没有办法在C++中通过名称动态调用函数

ruby-on-rails - Ruby 参数传递

c - C 中 char[] 和 char * 的区别

javascript - 仅输出后一个字符串,其数字与javascript中最大数字之和

python - 我应该在哪里定义我在 __init__ 中使用的函数

c# - 在 C# 中将泛型委托(delegate)作为方法参数传递