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

如何在C语言中传递一个带两个参数的函数作为参数?

问题分析与修正

你的代码存在两处语法错误,导致函数指针无法正确传递和调用:

1. func2的参数声明错误

你已经通过typedef定义了函数指针类型visitFunc,因此在func2的参数列表中,直接使用visitFunc func即可,无需重复写参数列表(int n1, int n2),重复声明会引发语法冲突。

2. printf格式字符串错误

原代码中printf("%d", z);的换行写法错误,正确的换行符应为\n,格式字符串需改为"%d\n"。另外注意要包含头文件stdio.h才能使用printf。


修正后的完整代码

#include <stdio.h>

typedef int (*visitFunc) (int n1, int n2);

int func1(int num1, int num2) {
  return num1 + num2;
}

// 修正函数参数声明
int func2(int num1, int num2, visitFunc func) {
  return func(num1, num2);
}

int main() {
  int x = 2;
  int y = 5;
  int z = func2(x, y, func1);
  printf("%d\n", z); // 修正格式字符串
  return 0;
}

关键说明

  • typedef int (*visitFunc)(int n1, int n2):定义了一种指针类型,专门指向“接收两个int参数、返回int值”的函数。
  • 传递函数指针时,直接写函数名func1即可,函数名本身就是指向该函数的指针。
  • func2通过visitFunc类型的参数接收函数指针,直接调用func(num1, num2)就能执行传入的目标函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:00:07