函数指针 VS 指针函数

//以下解释都是在C语言的范畴下进行的

1.     函数指针

函数指针指向函数的指针变量,因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上一致的。函数指针有两个用途:调用函数和做函数的参数。函数指针的说明方法为
数据类型标志符 *指针变量名)(参数);//函数括号中的参数可有可无,视情况而定。 

 

如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例:

int (*fp)(int a);           //这里就定义了一个指向函数的指针

fp=test;                //将函数test的地址赋给函数学指针fp 

 

typedef定义可以简化函数指针的定义,在定义一个的时候感觉不出来,但定义多了就知道方便了,上面的代码改写成如下的形式:

 typedef int (*fp)(int a);

//这里不是生命函数指针,而是定义一个函数指针的类型,这个类型是自己定义的,类型名为fp 
 fp fpi;        //
这里利用自己定义的类型名fp定义了一个fpi的函数指针

 fpi=test; 

 

2. 指针函数

指针函数是指带指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示:

 

返回类型标识符 *返回名称(形式参数表)

{

函数体

}

 

返回类型可以是任何基本类型和复合类型。

返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个变量

举例:

float *find(float pointer[],int n)/*定义指针函数*/ 

    float *pt; 
    pt=*(pointer+n); 
    return(pt); 

 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值