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

如何获取结构体中函数指针的返回值并传递给其他函数

实现方法如下

你只需要在调用结构体中的函数指针时,用变量承接返回值即可,不需要硬编码数值,具体实现逻辑如下:

  1. 获取函数指针返回值
    你之前的代码中调用Funcion.Fun2D(10000)时没有存储返回值,因此无法获取结果,修改为如下写法即可拿到返回值:
float res = Funcion.Fun2D(10000);

变量res中存储的就是函数运算的结果,可直接后续使用。

  1. 实现要求的布尔返回值函数
    按照需求可以实现两个版本的函数,分别对应接收运算结果、接收Function2D实例的场景:
  • 接收乘法运算结果的版本
// 需要引入stdbool.h头文件使用bool类型
#include <stdbool.h>
bool checkCalcResult(float calcRes) {
    // 此处替换为你需要的判断逻辑即可,示例为判断结果是否大于0
    return calcRes > 0;
}
  • 接收Function2D类型参数的版本
    直接在函数内部调用结构体中的函数指针拿到结果,完全不需要硬编码数值:
bool checkFun2D(Function2D func, float input) {
    float calcRes = func.Fun2D(input);
    // 示例判断逻辑:校验函数是否实现了输入值乘以2的要求
    return calcRes == input * 2;
}

完整可运行示例代码

#include <stdio.h>
#include <stdbool.h>

// 结构体定义
typedef struct Function2D {
    float (*Fun2D) (float);
} Function2D;

// 乘法函数,建议放在main之前避免编译器找不到声明
float Test (float n) {
    return n * 2;
}

bool checkCalcResult(float calcRes) {
    return calcRes > 0;
}

bool checkFun2D(Function2D func, float input) {
    float calcRes = func.Fun2D(input);
    printf("输入值%f的运算结果为%f\n", input, calcRes);
    return calcRes == input * 2;
}

int main() {
    Function2D Funcion;
    Funcion.Fun2D = Test;
    // 获取函数返回值
    float testRes = Funcion.Fun2D(10000);
    printf("10000的运算结果为%f\n", testRes);
    // 调用两个布尔函数测试
    bool res1 = checkCalcResult(testRes);
    bool res2 = checkFun2D(Funcion, 256.5);
    printf("checkCalcResult返回值:%d,checkFun2D返回值:%d", res1, res2);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:27:04