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

函数指针数组

回顾一下:
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从哈哈

猜你喜欢

转载自blog.csdn.net/weixin_40123831/article/details/80154687