2 baybaye baybaye 于 2016.03.05 15:40 提问

数据结构 函数指针

实现计算器的加法、减法、乘法和除法。使用一个命令行参数为您的选择,和2个数字。你使用下面的数组来赋值操作符函数。

int add(int x, int y);
int sub(int x, int y);
int mul(int x, int y);
int div(int x, int y);
int (*pf[4])(int, int) = { add, sub, mul, div };

图片说明

数据结构:函数指针数组
输入:选择运营商的数量(1,2,3,或4),
操作数的2个整数
输出:操作结果

2个回答

u013596119
u013596119   Rxr 2016.03.05 16:09
已采纳
 #include <iostream> 
using namespace std;
int add(int x,int y){
    return x+y;
}
int sub(int x,int y){
    return x-y;
}
int mul(int x,int y){
    return x*y;
}
int div(int x,int y){
    return x/y;
}
int main(){
    int (*pf[4])(int, int) = { add, sub, mul, div };
    while(true){
        cout<<"0. add"<<endl;
        cout<<"1. sub"<<endl;
        cout<<"2. mul"<<endl;
        cout<<"3. div"<<endl;
        cout<<"4. exit"<<endl;

        cout<<"Select Operation :";
        int opeNum;
        cin>>opeNum;
        if(opeNum==4){
            return 0;
        }
        cout<<"Input 2 operand :";
        int a,b;
        cin>>a>>b;
        cout<<"Result = "<<pf[opeNum](a,b)<<endl;
    }


}
baybaye
baybaye 谢谢
2 年多之前 回复
bealing
bealing   Rxr 2016.03.05 16:04

仅供参考!
#include
#include

int add(int a ,int b)
{
return a + b;
}
int sub(int a ,int b)
{
return a - b;
}
int mul(int a ,int b)
{
return a * b;
}
int dive(int a ,int b)
{
if (b == 0)
exit(1);
else
return a / b;
}
int (*pf[4])(int, int) = { add, sub, mul, dive };

int main()
{
int ch,x,y;
scanf("%d",&ch);
scanf("%d %d",&x,&y);
if (ch !=4)
printf("%d\n",(*pf[ch])(x,y));
else
exit(0);
return 0;
}

baybaye
baybaye 谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
函数指针和指针函数区别以及如何应用,举例说明
一直忘记这两者的区别,每次用到是重新捡起;  这里解析的比较简约,所以收藏!! 引用源:http://zhidao.baidu.com/question/264795890.html 1 函数指针变量 在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找
浅析结构体函数指针与内核设备驱动
最近在公司没什么事做,突然有来写写日志和博客,这种突发的灵感来自于我在学习内核驱动代码的时候发现了结构体的一种古老的初始化方法,多亏了尚观广州校区的叶老师在群里用心的给我文字讲解,让我明白了原来结构体初始化也可以用:冒号这样的方法。          其实在C语言中,冒号:的用法有很多,比如三目运算符   表达式?表达式1:表达式2 ; 它的意思就是如果表达式成立,那么执行表达式1
函数指针&指针函数&结构体调用函数
结构体通过指针调用函数的方法在项目中比较实用:上层函数实现,底层调用从而实现底层通知上层的回调功能!!! 在此说一下函数指针和指针函数这两个概念,下面先说一下两者的区别。 再者就是说一下结构体是如何通过函数指针的方式调用函数的。
指针与函数
指针与函数指针与函数指针与函数指针与函数指针与函数指针与函数
对象的函数指针(c++)
对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针对象的函数指针
函数指针资料
函数指针 回调 函数指针 回调函数指针 回调函数指针 回调函数指针 回调函数指针 回调
C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧
要对绝对地址0x100000赋值,我们可以用       (unsigned int  * ) 0x100000 = 1234;       那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?      *((void (*)( ))0x100000 ) ( );     首先要将0x100000强制转换成函数指针,即:      (void (*)())0x10000
比较函数指针、函数符和lambda函数
函数指针 函数指针即函数的地址,函数的地址是存储其机器语言代码内存的开始地址。函数的地址可作为其他函数的参数。 函数符 函数符是可以以函数方式与()结合使用的任意对象。这包括函数名、指向函数的指针和重载了()运算符的类对象(即定义了函数operator()()的类)。函数符是一个类对象,并非只能像函数名那样使用它,这要归功于类方法operator()()。函数符的优点之一是,可使用同一个
函数指针和block的区别
///  main.m //  C_函数指针 //  Created by dengyanzhou on 15/3/11. //  Copyright (c) 2015年 mobby. All rights reserved. // /*  *方法名称就是方法在内存的入口地址  */ int add(int add1,int add2) {         return a
C++函数指针、函数对象与C++11 function对象对比分析
1.函数指针 函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针主要由以下两方面的用途:调用函数和用作函数参数。 函数指针的声明方法 数据类型标志符 (指针变量名) (形参列表);  一般函数的声明为:   int func ( int x );  而一个函数指针的声明方法为:  int (*func