zoukankan      html  css  js  c++  java
  • 函数数组

    实现方法1:

    #include <iostream>
    using namespace std;
    
    int func1(int a, int b)
    {
    	return a+b+10;
    }
    int func2(int a, int b)
    {
    	return a+b+20;
    }
    int func3(int a, int b)
    {
    	return a+b+30;
    }
    int func4(int a, int b)
    {
    	return a+b+40;
    }
    int func5(int a, int b)
    {
    	return a+b+50;
    }
    
    int func_all(int type, int a, int b)
    {
    	switch(type)
    	{
    	case 0:  return func1(a,b);
    	case 1:  return func2(a,b);
    	case 2:  return func3(a,b);
    	case 3:  return func4(a,b);
    	case 4:  return func5(a,b);
    	}
    	return 0;
    }
    
    void main()
    {
    	// PF_CALC pFuncList[5] = {func1, func2, func3, func4, func5};
    
    	for (long k=0; k<5; k++)
    	{
    		printf("Test Func %d (2, 4): %d
    ",
    			k, func_all(k,2,4));
    	}
    	system("pause");
    }
    
    实现方法2:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int (*PF_CALC) (int a, int b);
    
    int func1(int a, int b)
    {
    	return a+b+10;
    }
    int func2(int a, int b)
    {
    	return a+b+20;
    }
    int func3(int a, int b)
    {
    	return a+b+30;
    }
    int func4(int a, int b)
    {
    	return a+b+40;
    }
    int func5(int a, int b)
    {
    	return a+b+50;
    }
    
    void main()
    {
    	PF_CALC pFuncList[] = {&func1, &func2, &func3, &func4, &func5};
    
    	for (long k=0; k<5; k++)
    	{
    		printf("Test Func %d (2, 4): %d
    ",
    			k, pFuncList[k](2,4));
    	}
    	system("pause");
    }
    
    3.
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int (*NetMsgFunction) (int a, int b);
    
    NetMsgFunction pFuncList[10];
    
    int func1(int a, int b)
    {
    	return a+b+10;
    }
    int func2(int a, int b)
    {
    	return a+b+20;
    }
    int func3(int a, int b)
    {
    	return a+b+30;
    }
    int func4(int a, int b)
    {
    	return a+b+40;
    }
    int func5(int a, int b)
    {
    	return a+b+50;
    }
    
    void Reg(int nMsgId,NetMsgFunction fuc)
    {
    	pFuncList[nMsgId] = fuc;
    }
    
    void main()
    {
    	Reg(0,func1);
    	Reg(1,func2);
    	Reg(2,func3);
    	Reg(3,func4);
    	Reg(4,func5);
    	for (long k=0; k<5; k++)
    	{
    		printf("Test Func %d (2, 4): %d
    ",k, pFuncList[k](2,4));
    	}
    	system("pause");
    }
    


    
    
  • 相关阅读:
    Apachebench压力测试
    nodejs调试方法
    chrome 内存泄漏如何定位
    nodejs模块路径alias
    云计算基本概念IaaS,PaaS,SaaS和Serverless
    单点登录sso
    彻底删除mysql服务
    Java-Tomcat for Mac配置
    访问日志不记录静态文件 访问日志切割 静态元素过期时间
    Mac eclipse 连接安卓手机调试 adb
  • 原文地址:https://www.cnblogs.com/byfei/p/14104393.html
Copyright © 2011-2022 走看看