以前在学c的时候对于函数指针的概念没有怎么仔细看,现在回来温习一下,做个记录以后方便回看
因为太简单了,直接把代码pull在这
int main(){
int choose;
printf("1.传统调用函数\n");
printf("2.利用函数指针调用\n");
printf("3.函数指针作为参数\n");
printf("please input your choose:\n");
scanf("%d", &choose);
switch (choose)
{
case 1:
funNormal();
break;
case 2:
funPointer();
break;
case 3:
funPointerPara(max);
break;
default:
break;
}
}
void funPointerPara(int(*p)(int, int)){
printf("函数指针作为参数\n");
int a, b, c;
printf("please input two number\n");
scanf("%d%d", &a, &b);
printf("a = %d,b= %d\n", a, b);
c = (*p)(a, b);
printf("max is %d\n", c);
}
void funPointer(){
printf("利用函数指针调用\n");
int a, b, c;
printf("please input two number\n");
scanf("%d%d", &a, &b);
printf("a = %d,b= %d\n", a, b);
//利用函数指针调用
int(*p)(int, int);//定义函数指针
p = max;
c = (*p)(a, b);
printf("max is %d\n", c);
}
void funNormal(){
printf("传统调用函数\n");
int a, b, c;
printf("please input two number\n");
scanf("%d%d", &a, &b);
printf("a = %d,b= %d\n", a, b);
//传统调用函数
c = max(a, b);
printf("max is %d\n", c);
}
int max(int a, int b){
return a > b ? a : b;
}
两种调用方法
#include <stdlib.h>
#include <stdio.h>
int max(int a,int b){
return a > b ? a : b;
}
int min(int a, int b){
return a < b ? a : b;
}
int fun1(int a, int b, int(*p)(int a, int b)){
return (*p)(a, b);
}
int fun2(int a, int b, int(*p)(int a, int b)){
return p(a, b);
}
int main(){
int result1 = fun1(7, 8, max);
int result2 = fun2(7, 8, max);
printf("result1: %d\n", result1);
printf("result1: %d\n", result2);
}