一些关于函数指针的声明

先热个身!


1.

int abc();

解答
声明一个函数,无参数,返回值为int;


2.

int abc[3];

解答:
声明了一个拥有三个int元素的数组;


3.

int **abc();

解答:
函数名为abc,无参数,返回值为int**


4.

int (*abc)();

解答:
拿掉abc这个名字,我们来观察类型——int (*)(),这是一个无参数,返回值为int的函数指针,故abc为函数指针。


让我们加点力度!

5.

int (*abc)[6];

解答:
如果一眼看不出来,就先把名字去掉观察类型——int (*)[6],这是一个数组指针,故abc是一个指向拥有6个整型的数组的指针


6.

int *abc();

解答
abc为函数指针,指向一个无参数,返回值为int的函数;


7.

int **(*abc[6])();

解答

  • []的优先级比*高,所以abc先和[]结合,所以abc首先是一个数组,那数组里的元素是什么呢?
  • 类比int a[6],如果把数组名a以及[6]先拿掉,剩下的就是数组元素类型int。
  • 这里我们把abc[6]拿掉,剩下——int** (*)(),这依然是一个函数的指针,无参数,返回值为 int **;
  • 所以abc是一个数组,拥有6个元素,每个元素为函数指针。

再加把火!

8

int **abc[6];

解答
有了之前的解答,依然先把abc[6]拿走,剩下——int**,所以abc是一个数组,有6个元素,每个元素的类型是int**


9

int *(*abc)[6];

解答
这里先将abc与*结合,那abc首先是一个指针,拿走abc,剩下 ——int* ( * )[6],这是一个数组指针,所以abc是一个数组指针,指向一个拥有6个元素的数组,其中每个元素的类型为int*


10

int *(*abc())();

解答

  • ()的优先级较*更高,故abc()首先是一个无参数的函数,那abc的返回值是什么呢?
  • 我们把abc()先暂时拿走,就能看清楚abc的返回值——int* (*)(),这是个函数指针,无参数,返回值为int*
  • 所以abc是一个函数,无参数,返回值为函数指针

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值