C/C++中switch用法的一种替换方式
2014-02-25 14:00
537 查看
在C/C++中,switch语句是经常被用到的,当switch内的case语句较多时程序有时显得比较繁乱,此种情况下可以用另外一种实现方式替代switch。详细用法见例子:
首先声明一个BasicOperationsFunc,然后定义一个BasicOperationsFunc类型的数组,这样在Fun2函数中就可以不用switch,而直接通过basicOperationFunc来调用相应的函数即可。如果在case条件比较多的情况下,这是一种不错的替代方法。
还有其它推荐的方法吗?
#include "stdafx.h" float AddFunc(float a, float b) { return (a + b); } float SubFunc(float a, float b) { return (a - b); } float MultiplyFunc(float a, float b) { return (a * b); } float DivisionFunc(float a, float b) { return (a / b); } void Fun1(float a, float b, int flag, float &result) { switch (flag) { case 0: result = AddFunc(a, b); break; case 1: result = SubFunc(a, b); break; case 2: result = MultiplyFunc(a, b); break; case 3: result = DivisionFunc(a, b); break; } } //若函数无参数,且返回值为空,则应该这样定义: //typedef void (*BasicOperationsFunc)(); typedef float (*BasicOperationsFunc)(float a, float b); BasicOperationsFunc g_BasicOperationsFunc[] = { &AddFunc, &SubFunc, &MultiplyFunc, &DivisionFunc }; void Fun2(float a, float b, int flag, float &result) { BasicOperationsFunc basicOperationFunc = g_BasicOperationsFunc[flag]; if (!basicOperationFunc) return; result = basicOperationFunc(a, b); } int _tmain(int argc, _TCHAR* argv[]) { float a = 10, b = 2; float result1 = 0, result2 = 0; int flag = 1; Fun1(a, b, flag, result1); Fun2(a, b, flag, result2); return 0; }
首先声明一个BasicOperationsFunc,然后定义一个BasicOperationsFunc类型的数组,这样在Fun2函数中就可以不用switch,而直接通过basicOperationFunc来调用相应的函数即可。如果在case条件比较多的情况下,这是一种不错的替代方法。
还有其它推荐的方法吗?
相关文章推荐
- C++底层读取Shp文件
- C/C++ 获取目录下的文件列表信息
- C++高性能服务框架revolver:下载、编译和工程介绍
- TOJ 2674 Java Vs C++ 字符串处理
- 在vc的cpp头部加入#define new DEBUG_NEW的作用
- POJ2236详细的解题报告(C语言版)
- C++中"std::"是什么意思?起什么作用?namespace?iostream和iostream.h的区别
- 如何c++去除string字符串首尾的\n,\r,\t,空格?
- 能让你成为更优秀程序员的10个C语言资源
- Visual C++ 编译器参数传递和命名约定——关于__cdecl和__stdcall
- 华为机试通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- c语言-扑克牌小魔术
- c语言-猜数字游戏
- python 像C语言样的函数参数引用实现..
- C语言学习——结构体
- C++中友元(友元函数和友元类)的用法和功能
- EasyX Library for C++ (Ver:2013冬至版)头文件整理
- kmp算法详解
- 《c++stl中文版》读书心得
- 职责链模式(C++实现)