【每日一C之十五】函数指针的思考

每日一C之函数指针的思考

       每天一个C语言贝壳厚积薄发积跬步以致千里

 今日贝壳:函数指针能带来什么?它让哪些设想变为可能?
            1.函数的困境
            人们对编程语言的苛求永远没有上限,总是希望它能更简单,更快速,更方便地实现人们心中的想法。代码的可重用性便是其中之一,提高代码可重用性很大一部分取决于函数的可重用性。目前,函数的参数仅限于数据,这和函数的定义相吻合,函数是一组固定操作的集合。如果需要对数据进行不同的操作,则需要调用不同的函数处理数据。如果函数接受数据参数的同时接受一个”操作参数“,并根据这个操作参数对数据进行不同的处理,则函数的重用性将得到提高。
           2.让函数接受一个操作参数
            STL(C++标准程序库)是代码重用性的绝佳之作,里面同过template机制实现了:函数接受一个操作参数的设想。这里,我们通过让函数指针做函数参数,来扮演这个”操作参数“的角色,实现具有更高重用性的函数。
#include
    
    
     
     
int Sub(int a,int b)                        //定义减法函数
{   
	return (a-b);
}
int Add(int a,int b)                        //定义加法函数
{
	return (a+b);
}
int Squ(int a,int b)                        //定义平方和函数
{
    return (a*a+b*b)
}
int Opeator(int a,int b,int (*p)(int,int))  //函数指针做参数,Opeator将可实现多种功能
{
	return p(a,b);
}
int main()
{
	int (*p)(int,int);
	p=Sub;
	printf("a-b=%d \n",Opeator(100,3,p));   //通过函数指针p实现减法功能
	p=Add;
	printf("a+b=%d \n",Opeator(100,3,p));   //通过函数指针p实现加法功能
	p=Squ;
	printf("a*a+b*b=%d \n",Opeator(100,3,p));            //实现平方和功能
    return 0;
}

    
    
                    
             示例程序只是抛砖引玉,只能象征性得描述一下问题的轮廓。软件的可重用性是很高深的研究课题,有兴趣的读者可试着阅读一些专业资料。

                     Have a nice day !
  

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值