• 函数数组


    实现方法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");
    }
    


    
       
    
    
  • 相关阅读:
    EL表达式 (详解)
    宜信面试整理
    Java 合并两个排序数组
    动态规划初识(爬楼梯问题)
    二叉树的最小深度
    ElasticSearch 单字符串多字段查询评分问题
    ES 分词
    汽车之家 面试总结
    浪潮之巅读书笔记
    闲徕互娱 面试总结
  • 原文地址:https://www.cnblogs.com/byfei/p/6389794.html
Copyright © 2020-2023  润新知