您的位置:首页 > 其它

顺时针/螺旋-规则

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: