函数指针和函数指针数组

1、函数指针和函数指针数组的定义

int (* fp) (int);  //首先根据结合性,第一个括号代表fp是一个指针,考虑到第二个括号代表函数调用运算符,因此可以判断fp是一个函数指针,它指向一个入口参数与返回值都是int类型的函数;

int *fp(int);  //由于函数调用的运算符比*的优先级要高,编译器首先认为fp(int)是一个运算单位,这显然是一个函数,而对函数的返回值做取内容的运算*(fp(int))的结果是一个int,因此,fp是一个以整数为入口参数,返回值为指向int类型的指针的函数

int **fp_array[10](int);  //[ ]和()的优先级都比*要高,并且[]和()的结合型是自左向右,因此编译器首先将fp_array[]作为一个运算单位,这是一个数组,考虑到后面的函数调用运算符,我们可以判断fp_array[10](int)是一个函数数组,数组中的每个元素都是一个以整数类型为参数的函数,这个函数的返回值是一个执行整数的二重指针;然而,c语言中并没有函数数组的概念,因此这行语法错误。

int *(* fp_array[10])(int);//对于fp_array,这首先是一个数组,考虑其前面的*,所以数组中的每个元素都是指针,即使一个指针数组,再考虑到后面的函数调用运算符,所以fp_array是一个函数指针数组。它以int为入口参数,返回值是int *。


2、使用:
int * myfuction(int);
int * (* fp)(int);
int * ptr;

fp = myfuction;  //为函数指针赋初值,使它指向函数myfuction;
ptr = (*fp)(3);    //通过函数指针调用函数,与myfuction(3)的效果是一样的;
ptr = fp(4);    //这也是通过函数指针调用函数,与(* fp)(4)的效果是一样的;



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值