顺时针/螺旋-规则
2013-10-26 10:33
561 查看
顺时针/螺旋规则可以概括成下面简单的三步:
1. 从一个未知元素开始,以螺旋/顺时针的方向移动,当遇上下面的元素时,用相应的词替换它:
[X] 或 []
=>类型为…的大小为X的数组(Array X size of…)或类型为…的未知大小的数组(Array undefined size of…)
(type1, type2)
=>参数为type1和type2、返回值为…的函数(function passing type1 and type2 returning…)
*
=>指向…的指针(pointer(s) to…)
2. 以螺旋/瞬时间方向继续移动,直到覆盖所有的符号。
3. 总是先解决在括号的对象
实例1. 简单声明
Q:str是什么?
· 从str开始,螺旋顺时针方向移动,遇到的第一个字符是一个"[",意味着str是一个数组,因此:
str是一个大小为10,类型为…的数组(str is an array 10 of…)
· 继续螺旋顺时针方向移动,下面遇到的是一个"*",意味着是指针,因此:
str是一个大小为10,指向…的指针的数组(str is an array 10 of pointers to…)
· 继续螺旋顺时针方向移动,这是碰到了;也就是结束了,但我们还没有覆盖到所有的字符,所以移动继续,这时我们遇到了"char",因此:
str是一个大小为10,指向char的指针的数组
到目前为此,我们已经覆盖到了语句中的所有字符,我们完成了声明解析。
实例2. 函数指针声明
Q:fp是什么?
· 从fp开始,螺旋顺时针方向移动,遇到的第一个符号是“)”,因此fp是在一个括号内,那么我们继续在括号内部进行顺时针旋转,接下来的字符是“*”,因此:
fp是一个指向…的指针(fp is a pointer to…)
· 现在我们出了括号,继续螺旋顺时针移动,碰到了“(”,我们得到了一个函数,因此:
fp是一个指向参数为int和float指针、返回值为…的函数的指针(fp is a pointer to function passing an int and a pointer to float returnning…)
· 继续螺旋顺时针移动,这时我们碰到了“*”字符,因此:
fp是一个指向参数为int和float指针、返回值为…指针的函数的指针(fp is a pointer to a function passing an int and a pointer to float returning a pointer to…)
· 继续螺旋顺时针移动,碰到了“;”,但是我们还没有覆盖到语句中的所有字符,所以我们继续移动,最后碰到了“char”,因此:
fp是一个指向参数为int和float指针、返回值为char指针的函数的指针(fp is a pointer to a function passing an int and a pointer to float returning a pointer to a char)
实例3. 终极声明
Stop and trying.
reference:http://c-faq.com/decl/spiral.anderson.html
1. 从一个未知元素开始,以螺旋/顺时针的方向移动,当遇上下面的元素时,用相应的词替换它:
[X] 或 []
=>类型为…的大小为X的数组(Array X size of…)或类型为…的未知大小的数组(Array undefined size of…)
(type1, type2)
=>参数为type1和type2、返回值为…的函数(function passing type1 and type2 returning…)
*
=>指向…的指针(pointer(s) to…)
2. 以螺旋/瞬时间方向继续移动,直到覆盖所有的符号。
3. 总是先解决在括号的对象
实例1. 简单声明
Q:str是什么?
· 从str开始,螺旋顺时针方向移动,遇到的第一个字符是一个"[",意味着str是一个数组,因此:
str是一个大小为10,类型为…的数组(str is an array 10 of…)
· 继续螺旋顺时针方向移动,下面遇到的是一个"*",意味着是指针,因此:
str是一个大小为10,指向…的指针的数组(str is an array 10 of pointers to…)
· 继续螺旋顺时针方向移动,这是碰到了;也就是结束了,但我们还没有覆盖到所有的字符,所以移动继续,这时我们遇到了"char",因此:
str是一个大小为10,指向char的指针的数组
到目前为此,我们已经覆盖到了语句中的所有字符,我们完成了声明解析。
实例2. 函数指针声明
Q:fp是什么?
· 从fp开始,螺旋顺时针方向移动,遇到的第一个符号是“)”,因此fp是在一个括号内,那么我们继续在括号内部进行顺时针旋转,接下来的字符是“*”,因此:
fp是一个指向…的指针(fp is a pointer to…)
· 现在我们出了括号,继续螺旋顺时针移动,碰到了“(”,我们得到了一个函数,因此:
fp是一个指向参数为int和float指针、返回值为…的函数的指针(fp is a pointer to function passing an int and a pointer to float returnning…)
· 继续螺旋顺时针移动,这时我们碰到了“*”字符,因此:
fp是一个指向参数为int和float指针、返回值为…指针的函数的指针(fp is a pointer to a function passing an int and a pointer to float returning a pointer to…)
· 继续螺旋顺时针移动,碰到了“;”,但是我们还没有覆盖到语句中的所有字符,所以我们继续移动,最后碰到了“char”,因此:
fp是一个指向参数为int和float指针、返回值为char指针的函数的指针(fp is a pointer to a function passing an int and a pointer to float returning a pointer to a char)
实例3. 终极声明
Stop and trying.
reference:http://c-faq.com/decl/spiral.anderson.html
相关文章推荐
- 解读C/C++声明的Clockwise/Spiral Rule(顺时针螺旋规则)
- 三角螺旋阵 方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
- PHP 5.3新特性命名空间规则解析及高级功能
- C++ sizeof 使用规则及陷阱分析
- 【转载】软件开发模式对比(瀑布、迭代、螺旋、敏捷)
- 英文标题首字母大写规则
- 小明历险记:规则引擎drools教程一
- CSS命名规则
- 《高性能网站建设指南》阅读笔记_规则5- 将样式放在顶部
- nginx location 匹配规则
- 1050. 螺旋矩阵(25)
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Pyke 逻辑编程入门(15):知识库之“规则库”
- 《高性能网站建设指南》阅读笔记_规则14- 使Ajax可缓存
- YSlow团队的23条“Web性能最佳实践和规则”
- C++类使用注意规则
- 矩阵螺旋输出
- 2010-03-25 GNU make详细规则(一)
- DLL动态链接库编程入门之四:MFC规则DLL(下)
- Java编译后产生class文件的命名规则