指向函数的指针

指向函数的指针的一般形式为:

类型声明符   (*指针变量名)();

“类型声明符”表示被指函数的返回值的类型;“(*指针变量名)”表示 “*” 后面的变量是定

义的指针变量;“()”表示指针变量所指的是一个函数。


好处:提高程序的通用性和可适应性。


C语言程序是由若干个函数组成的,每个函数在编译链接后总是占用一段连续的内存区,

而函数名是该函数所占内存区的入口地址,每个入口地址就是函数的指针。在程序中可

以定义一个指针变量用于指向函数,然后通过该指针变量来调用它所指的函数。


使用函数指针变量还应该注意一下两点:

1.函数指针变量不能进行算术运算,这与数组指针变量不同。数组指针变量加减一个

整数可是指针移动指向后面或前面的数组元素,而函数指针的移动毫无意义。

2.函数调用中“(*指针变量名)”两边的括号不可少,其中的*不应该理解为求值运算,

在此它只是一个表示符号。



#include <stdio.h>
int add(int a,int b);
int sub(int a,int b);
int mul(int a,int b);
int div(int a,int b);
void result(int(*pf)(),int a,int b);
main()
{
	int i,j;
	int (*pf)();
	printf("input two integer i,j");
	scanf("%d,%d",&i,&j);
	pf=add;
	result(pf,i,j);
	pf=sub;
	result(pf,i,j);
	pf=mul;
	result(pf,i,j);
	pf=div;
	result(pf,i,j);
	printf("\n");
}
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;
}
void result(int(*p)(),int a,int b)
{
	int value;
	value=(* p)(a,b);
	printf("%d\t",value);
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值