zoukankan      html  css  js  c++  java
  • 顺时针/螺旋-规则

    顺时针/螺旋规则可以概括成下面简单的三步:

      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. 简单声明

    GV[$WJ[]O3NEG0@$CY{PV06

    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. 函数指针声明

    QQ图片20131026101339

    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. 终极声明

    QQ图片20131026102925

    Stop and trying.

    reference:http://c-faq.com/decl/spiral.anderson.html

  • 相关阅读:
    js-artDialog文档说明
    T-SQL数据库函数
    强大的Jquery对象选择器
    学习正则表达式
    经典正则
    其他常用的正则表达式
    celery的使用
    django中间件
    AJAX
    Django Form表单组件
  • 原文地址:https://www.cnblogs.com/navono007/p/3388998.html
Copyright © 2011-2022 走看看