C语言的复杂声明的使用场景是什么呢?


请问大神:C语言的复杂声明的使用场景是什么呢? 为什么会用到这么复杂的声明呢?
比如这个声明
char ((x[3])())[5];


复杂声明是特性,但是使用的时候不一定非要用得那么复杂。

char (*x[3])(int a)

意思是x是一个长度为3个单位的数组,每个单位是一个函数指针,这个函数有一个为int的参数a,这个函数返回char

那么,可能还有更复杂的,不过我就以以上这个作为例子,看下实际写代码的时候,怎么一目了然。

typedef char func(int a);
typedef func *func_ptr;
func_ptr x[3];

你问的是现实的意义,其实现实代码中绝对不少比以上更复杂的封装,但是只要善用typedef,一切都能简化到一眼看懂。



不知道你写的是不是char ((x[3])())[5],如果是的话,那就有问题了(不能声明函数数组)。

关于为什么会有很多复杂的声明的应用场景,那就很多了。
举个例子,在一个图像的RGBA四个通道的数据保存在一个ucharbuffer中,现在直到图像的高和宽,怎么比较优美的取出x行y列的alpha值呢?

// 这里假设图像为 256*128
uint8_t (*p)[128][4] = (uint8_t (*)[128][4])buf;
// 取x行y列的alpha值
uint8_t a = p[x][y][3];    // 因为RGBA,alpha在最后

再例如,你有一个任务调度队列,你可以把一些任务塞给它去执行。
那么它需要接受你传入的任务,通常那就是一个函数和函数的参数。
假设这个函数是一个读取文件的参数(fun1),读取完成之后这个函数要通知传入任务者或者进行下一步操作。那么这个fun1可以接受一个函数做参数,调用这个函数来告知读取已完成,进行下一步操作

// 通知函数
void notify();
// 读取文件的函数声明
int read_file(void(*)()/*传入通知函数*/);
// 入队函数声明
void add_task(int(*)(void())/*传入任务函数*/,void(*)()/*给任务函数的参数*/)

实际上一般不会这么做,这只是举个例子。



相关阅读:
博客系统数据库设计(链接与文章、分类、静态页面)
为什么互联网金融平台用Java开发比较多?除了安全还有什么优势?好招人?
nginx+gunicron+flask如何实现服务平滑升级?
php下载flv文件或者mp4文件无法播放
python查询数据库最新数据
使用C语言播放MP3文件
为什我用V-model的值放到vux管理,就不是动态的了
网站管理后台的那种点击左边链接,在右侧显示如何通过js实现?
centos中查询php配置文件
node怎么判断是开发环境还是生产环境??
怎样用jquery生成带有倾斜角度的验证码
如何滑动页面,当元素出现在当前屏幕时,才执行动画
intell idea打开项目后卡住,界面一直白色,求拯救!
在前端工程化的趋势下,php还有必要去渲染视图层吗?
奇异的代码 之 PHP中的错误和异常
用ajax调取的图片url,图片是存在webroot/images/目录下,为什么图片不能及时加载?
kill命令如何一次杀死多个进程
求react 中使用fetch的demo
大类点击之后得到的列表用pagination 插件进行了ajax分页问题
关于正确理解javascript的同步,异步的执行,Event Loop事件循环,异步执行完如何通知主线程的demo



快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 (苏教版)九年级上册词语手册 忘却与不语 小学“弘扬长征精神,立志成才报国”系列活动计划 晾台作文200字 梦幻别墅——班上的那些事儿 写简历须有的放矢 专家称其会影响求职成功率 一场不该发生的战争(日记) 两个弟弟的烦恼作文1200字 濮上美景 小学五年级作文900字:嫦娥奔月 本色读后感 人生的领悟作文500字 我的老师250字 最新婚礼庆典主持词 2013清新的圣诞节祝福语 触动心扉的情感语录 有时候 等么 小学六年级作文500字:让我感动的一件事 (600字) 经典对话 送雍陶入蜀 最新重阳节观赏菊花的作文:赏菊 我不会写东西了 绘本爱情7.1 我身边的团员演讲稿 会跳舞的焰火 遗体告别仪式主持词 观后感范文 大学素质拓展心得体会 90后是我们!!而我们越长大觉得越孤单!作文800字 马年新农村春节对联 区分局党支部年工作总结_工作总结范文 《榔坪之夜》 现代诗:一阵雨,一场心事 来世,让我们好好相爱 生活的残酷与美丽_人生感悟 2010年8月入党思想汇报:“三个代表”情系我心 小燕子的哭啼 回忆(三) 我读懂了友情作文400字 (给家长的一封感恩祝福信转载)作文1200字 高考零分作文_更重要的事 妈妈砍断了我的手作文1600字 银行主任辞职报告 北京笔记,如何才能改变宇宙正在加速膨胀(二) 游越秀山有感 哲学家的最后一课 《回乡下老家》七星叟 当年 扬州市中考满分作文:该让就让,不该让就不让作文700字 入党申请书范文61

Copyright © 2016 phpStudy |