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 交通频道 作文范文 春天小诗 大学社团半年总结 那次我学会了游泳作文600字 可爱的抱窝鸡 那晚的红月亮 中国国有资产投资体制演变研究 项目签约仪式领导致辞 一千零一夜读后感受 最新医护人员医德医风心得体会 好妈妈好老师读后感 拆迁补偿协议范本 崩溃边缘 蝈蝈作文250字 窗外的梦 《700天极地生还》读后感 梦,精神的支柱100字 再致?郭云鹤作文400字 踏入初中的我500字 我们不哭作文300字 经典人生感悟的句子,说的太有道理了 高中高一作文300字:我是一个茄子狂 徒步记作文700字 只求醉(挪空缺滴嗳↘) 黄河的作文700字 2008高考试题---2008年普通高等学校招生全国统一考试(广东卷B)(有答案)(会员上传) 小学六年级作文900字:我家的故事 用和谐关系提升幸福支撑 造就自己,成就奇迹作文 海边的时时念—— 仰观宇宙之大后一句 读《围城》有感3篇 人生识字胡涂始 2016年“积极向上喜迎新年”活动方案 区党风建设自查报告 到你心里去 早读后感200字 医生岗前培训心得体会范文 “专家领航 助推教师专业成长”校本研修活动主持词 童年水墨画200字 父亲,谢谢您550字 荷花二(蒲伋为荷文化写诗) 《我们家的低碳星期天》 过分作文300字 妇女节短信:妇女节给妈妈的祝福短信 县医院廉政建设工作汇报材料 以科学发展观为指导全面建设现代后勤 2016三严三实和忠诚干净担当专题教育心得 秋天的思念外一首 亲情的避风港作文700字 传说的好人

Copyright © 2016 phpStudy |