#include<stdio.h>
char *Answer(char);
int add(int,int);
int sub(int,int);
int main()
{
int (*fp)(int,int);//定义函数指针-》指向函数的指针 返回值类型与形参类型相同的函数
int (*fq)(int,int);
int num1,num2;
char op;
scanf("%d,%d",&num1,&num2);
fp=add;//函数名相当于函数的地址
fq=sub;
printf("%d,%d",(*fp)(num1,num2),(*fq)(num1,num2));
/*
scanf("%c",&op);
printf("%s",Answer(op));*/
}
char *Answer(char op)//指针函数 -》返回值是指针
{
switch(op)
{
case 'A':return "Apple";
case 'B':return "Banana";
case 'C':return "Carrot";
default:return "None";
}
}
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
函数指针作为参数
#include<stdio.h>
#include<stdlib.h>
int add(int,int);
int sub(int,int);
int calc(int (*fp)(int,int),int,int);
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int calc(int (*fp)(int,int),int a,int b)//函数指针做形参
{
return (*fp)(a,b);
}
int main()
{
printf("%d",calc(add,3,5));
printf("%d",calc(sub,3,5));
return 0;
}
函数指针做返回值
#include<stdio.h>
#include<stdlib.h>
int add(int,int);
int sub(int,int);
int calc(int (*fp)(int,int),int,int);
int (*select(char))(int,int);//返回值是函数指针 int (*)(int,int)
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int calc(int (*fp)(int,int),int a,int b)//函数指针做形参
{
return (*fp)(a,b);
}
int (*select(char op))(int,int)
{
switch(op)
{
case '+':return add;
case '-':return sub;
}
}
int main()
{
char op;
int (*fb)(int,int);
scanf("%c",&op);
printf("%d",calc(add,3,5));
printf("%d\n",calc(sub,3,5));
fb=select(op);
printf("%d",calc(fb,3,5));
return 0;
}