不然608 2023-01-21 10:26 采纳率: 71.4%
浏览 24
已结题

关于函数指针调用不同的函数

红线指的这里,函数指针数组里的两个int参数,要是加法函数参数有三个,减法函数有四个参数,主函数的函数指针参数怎么写

img

  • 写回答

3条回答 默认 最新

  • a5156520 2023-01-21 10:56
    关注

    可以参数改为double数组和一个int,double数组存储参数,后一个int指示数组的长度,也就是参数的个数,测试代码如下:

    #include <stdio.h>
    
    double sum(double * arr,int n){
        
        int i=0;
        double sum=0;
        for(i=0;i<n;i++){
            sum+=arr[i];
        }
        
        return sum;
    }
     
    double sub (double * arr,int n){
        
        double result = arr[0]; 
        int i=0;
        for(i=1;i<n;i++){
            
            result-=arr[i];
        }
        
        return result;
    } 
    
    
    double mul(double * arr,int n){
        
        double result=1.0;
        int i;
        for(i=0;i<n;i++){
            result*=arr[i];
        }
        
        return result;
    }
    
    double divi(double *arr,int n){
        
        double result = (double)(arr[0]*1.0);
        
        int i;
        for(i=1;i<n;i++){
            result/=arr[i];
        }
        
        return result;    
        
    }
    
    
    int main(int argc,char *argv[]){
        
        // 为了传递参数和返回值更方便, 可以如下定义函数指针数组 
        double (*ptfun[4])(double * ,int );
        ptfun[0]= sum;
        ptfun[1]= sub;
        ptfun[2]= mul;
        ptfun[3]=divi;
        
        double arr[4]= {120,3,2,4};
    
        
        double     ret = ptfun[0](arr,3);
        printf("%f+%f+%f=%f\n",arr[0],arr[1],arr[2],ret);
        
        ret = ptfun[1](arr,4);
        printf("%f-%f-%f-%f=%f\n",arr[0],arr[1],arr[2],arr[3],ret);
    
        ret = ptfun[2](arr,2);
        printf("%f*%f=%f\n",arr[0],arr[1],ret);
        
        ret = ptfun[3](arr,3);
        printf("%f/%f/%f=%f\n",arr[0],arr[1],arr[2],ret);
    
        return 0;
        
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月21日

悬赏问题

  • ¥15 python变量和列表之间的相互影响
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)