关于函数地址复杂声明和定义

 

近来翻阅一本关于C++的书籍,上面有关于标题内容的论述,并举了几个例子,特写下来与大家共享:

 

 

/* 1 */  void * (*(*fp1)(int))[10];

首先(*fp1)(int)为一个指向函数的指针,该函数的返回值为b,  转换为void*(*b)[10], b为指向c指针,

void*c[10], c为指针数组,类型为void.因此全部结合后可以看作是 fp1是一个指向函数的指针,该

函数接受int型的变量,返回一个指向void类型的指针数组的指针。

 

/* 2 */  float(*(*fp2)(int, int, float))(int);

同样在本例中(*fp2)(int, int, float)定义的是一个函数指针,函数的返回值为b, 上式为float(*b)(int)

显然b是一个函数指针,综述为:fp2是一个参数类型为int int float的函数指针,该函数的返回值是一个

指向参数为int 型返回值为float类型的函数指针。

 

/* 3 */ double(*(*(*fp3)())[10])();

(*fp3)()为函数指针,函数的返回值为b, double(*(*b)[10])(), double(*c[10])()为一个指针数组,
每一个指针指向函数。综述为fp3为参数列表为空的函数指针,该函数返回值类型为一个指针,该指针
指向参数为空,返回值为double的函数指针数组。
/* 4 */ int (*(*f4())[10])();
这个例子不同于上面的情况,f4()为函数,返回值为b, int(*(*b)[10])(), int(*c[10])(), 综述为f4是
一个返回指针的函数,该指针指向参数为空返回值为int型的函数指针的数组。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值