暴走的指压师

为何中年妇女对14岁正太不理不睬?28岁大妈是如何保持14岁身材与脸颊?三无蓝毛究竟身在何处?为何少年抛弃妹子去寻找基友的菊花,大妈抛弃正太去和眼镜妹百合? 一切的一切,请看《Q ヱヴァンゲリヲン新劇場版:Q 》
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

c function pointer example

Posted on 2010-12-04 11:32  晓彻  阅读(481)  评论(0编辑  收藏  举报

 

/*

In the following example we regard the task to perform one of the four
basic arithmetic operations. The task is first solved using a switch-statement.
Then it is shown, how the same can be done using a function pointer. 
It's only an example and the task is so easy that I suppose nobody will 
ever use a function pointer for it ;-)
 
*/

//------------------------------------------------------------------------------------
// 1.2 Introductory Example or How to Replace a Switch-Statement
// Task: Perform one of the four basic arithmetic operations specified by the
// characters '+', '-', '*' or '/'.


// The four arithmetic operations ... one of these functions is selected
// at runtime with a swicth or a function pointer
float Plus (float a, float b) { return a+b; }
float Minus (float a, float b) { return a-b; }
float Multiply(float a, float b) { return a*b; }
float Divide (float a, float b) { return a/b; }


// Solution with a switch-statement - <opCode> specifies which operation to execute
void Switch(float a, float b, char opCode)
{
float result;

// execute operation
switch(opCode)
{
case '+' : result = Plus (a, b); break;
case '-' : result = Minus (a, b); break;
case '*' : result = Multiply (a, b); break;
case '/' : result = Divide (a, b); break;
}

cout
<< "Switch: 2+5=" << result << endl; // display result
}


// Solution with a function pointer - <pt2Func> is a function pointer and points to
// a function which takes two floats and returns a float. The function pointer
// "specifies" which operation shall be executed.
void Switch_With_Function_Pointer(float a, float b, float (*pt2Func)(float, float))
{
float result = pt2Func(a, b); // call using function pointer

cout
<< "Switch replaced by function pointer: 2-5="; // display result
cout << result << endl;
}


// Execute example code
void Replace_A_Switch()
{
cout
<< endl << "Executing function 'Replace_A_Switch'" << endl;

Switch(
2, 5, /* '+' specifies function 'Plus' to be executed */ '+');
Switch_With_Function_Pointer(
2, 5, /* pointer to function 'Minus' */ &Minus);
}