黑马程序员技术交流社区

标题: 指向函数的指针 [打印本页]

作者: lixp    时间: 2015-10-30 18:23
标题: 指向函数的指针
#include<stdio.h>
int add(int a,int b);
int        sub(int a,int b);
int multiply(int a,int b);
int divide(int a,int b);
int show_menu();
int (*opreat)(int,int);
int main(int argc,char * argv[]){
    int x,y,result;  
                switch(show_menu()){
                        case 1:opreat=add;//这儿就是将函数给指针
                                break;
                case 2:opreat=sub;
                        break;
            case 3:opreat=multiply;
                        break;
            case 4:opreat=divide;
                    break;
            default: break;
                }   
        printf("请输入你要计算的两个数:\n");
        scanf("%d %d",&x,&y);
        result=(*opreat)(x,y);//给指针之后的调用方式
        printf("最终结果是:%d\t",result);       
   
                 

        return 0;
}
//加法
int add(int a,int b){
        return a+b;
}
//减法
int        sub(int a,int b){
        return a-b;
}
//乘法
int multiply(int a,int b){
        return a*b;
}

//除法
int divide(int a,int b){
        if(b==0){
                printf("除数不能为0!");
                return -1;
        }else{
                return a/b;
        }
}

int show_menu(){
    char c[20];
    //char c;
        int s;
   
        printf("--------------------------------\n");
        printf("请选择操作:\n");
        printf("Enter 1 is add\n");
        printf("Enter 2 is sub\n");
        printf("Enter 3 is multiply\n");
        printf("Enter 4 is divide\n");
        printf("--------------------------------\n");
        //s=scanf("%c",&c);
        s=gets(c);//不知道为啥非得要这种输入。。。 、
        return atoi(s);
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2