You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中使用&引用函数指针的作用是什么?函数名可直接赋值

C语言中&引用函数指针的作用

在C语言里,函数名本身会被隐式转换为指向该函数的指针,所以直接写afunc = product和afunc = &product的实际运行效果完全一致,编译器处理后的结果没有任何差异。使用&的作用主要体现在代码风格和可读性上:

  • 提升代码可读性:显式写出&能让阅读代码的人一眼明确这是在取函数的地址并赋值给函数指针,对C语言新手更友好,避免他们疑惑“为什么函数名能直接赋值给指针类型”。
  • 保持语法一致性:和取普通变量地址的写法(比如&int_num)统一,符合“取地址用&”的直觉逻辑,让代码风格更统一。

举个实际代码例子:

#include <stdio.h>
typedef int (*t_somefunc)(int,int);
int product(int, int);

int main(void) {
  // 两种写法完全等价
  t_somefunc afunc1 = &product;
  t_somefunc afunc2 = product;
  
  // 调用时,*也可以省略,afunc1(123,456)同样有效
  int x1 = (*afunc1)(123, 456);
  int x2 = afunc2(123, 456);
  
  printf("x1 value is %d\n", x1);
  printf("x2 value is %d\n", x2);
  return 0;
}

int product(int u, int v) {
  return u*v;
}

需要注意的是,不管用不用&,编译器都会将函数名解析为函数指针,所以这两种写法没有功能上的区别,只是风格选择。

内容的提问来源于stack exchange,提问作者amed svensson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:56:04