函数指针<边看美女,边涨知识(脑子)>

<边看美女,边涨知识(脑子)>系列文章目录

第一章 浮点型在内存中的存储<边看美女,边涨知识(脑子)>

第二章 数组指针<边看美女,边涨知识(脑子)>



前言

提示:本篇文章讲解的是函数指针函数指针数组

还会讲解一个函数指针数组的使用案例“简单的计算器


提示:以下是本篇文章正文内容,下面案例可供参考

一、函数指针是什么?

我们举个例子大家就明白了什么是函数指针了

整形指针:是存放整形的指针

字符指针:是存放字符的指针

数组指针:是存放数组的指针

那函数指针:就是存放函数的指针

1.回顾一下之前的字符指针的定义方法:

代码如下(示例):

int main()
{
    char ch='A';
    char *p=&ch;
    *p='B';
    return 0;
}

2. 函数指针定义方法:

代码如下(示例):

int add(int x,int y)
{
    return x+y;
}

int mian()
{
    int (*p)(int ,int )=&add;
}

二、函数指针数组

1.什么是函数指针数组

把函数的地址存放到一个数组中,这个数组就叫函数指针数组。

2.函数指针数组如何定义

代码如下(示例):

int add(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{
    return x-y;
}
int mian()
{
    int (*p[2])(int ,int )={add,sub};
}

三、函数指针数组的用途

函数指针数组的用途:转移表

1.转移表使用案例

代码如下(示例):

#include <stdio.h>
void front()
{
	printf("**********************************\n");
	printf("**       1.加法   2.减法        **\n");
	printf("**       3.乘法   4.除法        **\n");
	printf("**       5.取余   0.结束        **\n");
	printf("**********************************\n");
	printf("请选择:\n");
}
void add()
{
	printf("加法模式\n");
	int x = 0;
	int y = 0;
	int ret = 0;
	scanf("%d %d", &x, &y);
	ret = x + y;
	printf("%d + %d=%d\n", x, y, ret);
}
void sub()
{
	printf("减法模式\n");
	int x = 0;
	int y = 0;
	int ret = 0;
	scanf("%d %d", &x, &y);
	ret = x - y;
	printf("%d - %d=%d\n", x, y, ret);
}
void mul()
{
	printf("乘法模式\n");
	int x = 0;
	int y = 0;
	int ret = 0;
	scanf("%d %d", &x, &y);
	ret = x * y;
	printf("%d * %d=%d\n", x, y, ret);
}
void div()
{
	printf("除法模式\n");
	int x = 0;
	int y = 0;
	int ret = 0;
	scanf("%d %d", &x, &y);
	ret = x / y;
	printf("%d / %d=%d\n", x, y, ret);

}
void dre()
{
	printf("取余模式\n");
	int x = 0;
	int y = 0;
	int ret = 0;
	scanf("%d %d", &x, &y);
	ret = x % y;
	printf("%d %d=%d\n", x, y, ret);
}
void (*pf[6])() = { NULL,add,sub ,mul ,div ,dre };
int main()
{
	int select = 0;
	
	do
	{
	front();
	scanf("%d", &select);
	if (select>0&&select<=5)
	{
		pf[select]();
	}
	else if(select==0)
	{
		printf("退出成功\n");
		break;
	}
	else
	{
		printf("非法输入,请从新输入\n");
	}
	/*	
		switch (select)
		{
		case 1:
			
			add();
			break;
		case 2:
			sub();
			break;
		case 3:
			mul();
			break;
		case 4:
			div();
			break;
		case 5:
			dre();
			break;
		case 0:
			printf("退出计算器\n");
			break;
		default:
			printf("非法输入,请从新输入\n");
			break;
		}*/
	} while (select);
	return 0;
}

总结

这里对文章进行总结:

以上就是今天要讲的内容,本文简单介绍了函数指针函数指针数组的使用。

猜你喜欢

转载自blog.csdn.net/qq_45591898/article/details/128727713