Loading

c_cpp函数指针

以前在学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);
}
posted @ 2021-03-25 19:47  克豪  阅读(101)  评论(0)    收藏  举报