欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数指针数组和函数指针数组的指针

程序员文章站 2024-03-26 09:44:53
...

函数指针数组

回顾一下:
char *(*pf)(char *p);//函数指针

上面代码表示定义的是一个函数指针pf,pf是一个指针变量,那么,pf就可以存储在以个数组里面。如下:

char *(*pf[3])(char *p);//函数指针数组

上述代码定义的是一个函数指针数组,它是 一个数组,数组名为pf,数组内存储了3个指向函数的指针。这些指针指向一些返回值类型为指向字符的指针,参数为一个指向字符的指针的函数。。。最重要的是:它是数组!!!

有关函数指针数组的应用,我们需要掌握转移表,下面是一个实现计算器功能的代码:

int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}
int main()
{
	int x;
	int y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, add, sub, mul, div };//函数指针数组的初始化
	while (input)
	{
		printf("**************************");
		printf("  1:add        2:sub    \n");
		printf("  3:mul        4:div    \n");
		printf("**************************");
		printf("请选择:\n");
		scanf("%d",&input);
		if (input < 4 && input >1)
		{
			printf("输入操作数:\n");
			scanf("%d %d", &x, &y);
			ret = (*p[input])(x, y);
		}
		else
			printf("输入有误\n");
		printf("ret = %d\n", ret);
	}
	system("pause");

函数指针数组的指针

相信你已经明白,它是一个指针咯!

这个指针指向一个数组,这个数组里面存储的都是指向函数的指针,例如:

char *(*(*pf[3])(char *p));//函数指针数组的指针

注意:此处pf是一个指针变量,这个指针指向一个包含了3个元素的数组,数组里面存储的是指向函数的指针,指针指向一些返回值类型为指向字符的指针,参数为一个指向字符的指针的函数。更重要的是:它是指针哦!用法类似。

关于指针和数组有许多练习题,都需要我们一一掌握,只有掌握指针和数组的用法我们才能在写代码的时候得心应手,如有兴趣,点击链接:

h v从哈哈