#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
/*函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数*/
//int max(int x, int y)
//{
// return (x > y ? x : y);//返回两个数的最大值
//}
//int main()
//{
// int(*ptr)(int, int);//定义指向函数的指针变量
// int a, b, c;
// ptr = max; //将max函数的地址给ptr
// scanf("%d%d", &a, &b);
// c = (*ptr)(a, b); //ptr和max函数地址相同,相当于调用max函数
// printf("a=%d,b=%d,max=%d", a, b, max);
//}
/*函数指针可作为参数,也可作为返回值*/
//int add(int num1, int num2)
//{
// return num1 + num2;
//}
//
//int sub(int num1, int num2)
//{
// return num1 - num2;
//}
//
//int fun(int(*fp)(int, int), int num1, int num2)//函数指针做参数
//{
// return(*fp)(num1, num2);
//}
//
//int(*select(char c))(int, int)
//{
// switch (c)
// {
// case '+':return add;
// case '-':return sub;
// }
//}
//
//int main()
//{
// int num1, op, num2;
// int(*fp)(int, int);
// printf("请输入一个表达式,比如(1+3):\n");
// scanf("%d%c%d", &num1, &op, &num2);
// fp = select(op);//返回的函数指针赋予fp
// printf("%d%c%d=%d\n", num1, op, num2, fun(fp, num1, num2));
//
// /*
// printf("3+5=%d\n",fun(add,3,5));
// printf("3-5=%d\n",fun(sub,3,5));
// */
// return 0;
//}
//函数指针的使用,就是如何通过它来调用子函数
//int min(int x, int y) //函数,求两数中的小者
//{
// int z;
// if (x < y)z = x;
// else z = y;
// return (z);
//}
//void main()
//{
// int(*p)(); //函数指针变量的定义
// int a, b, m;
// p = min;
// printf("输入a和b:\n");
// scanf("%d,%d", &a, &b);
// m = (*p)(a, b); //函数调用
// printf("\na=%d,b=%d,min=%d\n", a, b, m);
//}