zoukankan      html  css  js  c++  java
  • 读书笔记《征服C指针》----C的声明是这样解读的

          解读C的声明的最好方法是用英语来阅读,道理很简单,因为C语言是美国人发明的。

    为了把问题变得更简单,在这里暂不考虑const和volatile。接下来遵循以下步骤来解释C的声明。

    1. 首先着眼于标识符(变量名或者函数名)。
    2. 从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针、数组、和函数)。优先顺序说明如下:
      • 用于整理声明内容的括弧。
      • 用于表示数组的[],用于表示函数的()。
      • 用于表示指针的*。
    3. 解释完成完成派生类型,使用“of”、“to”、“returning”将它们连接起来。
    4. 最后,追加数据类型修饰符(在左边,int,double等)。
    5. 英语不好的人,可以倒序用中文解释。

    数组元素个数和函数的参数属于类型的一部分。应该将它们作为附属类型的属性进行解释。

    比如:int (* func_p)(double);

         1.首先着眼于标识符。  int (* func_p)(double);   英语的表达为 func_p is 

         2.因为存在括号,这里着眼于*。 int (* func_p)(double);  英语的表达为func_p is pointer to

         3.解释用于函数的(),参数是double。int (* func_p)(double);  

           英语的表达为:func_p is pointer to function(double) returnning

         4.最后解释数据类型修饰符int。int (* func_p)(double);

            英语的表达为:func_p is pointer to function(double) returnning int。

         5.最后翻译成中文:func_p是指向返回int的函数的指针。

    根据这样的步骤,可以解释任何一个声明,比如更为复杂的:int atexit(void (*func)(void));
    英语的表达为:atexit is function (func is pointer to function(void) returnning to void) returnning int.

    翻译成中文为:atexit 是返回int的函数的(参数是,指向返回void没有参数的函数指针)

  • 相关阅读:
    Java Number & Math 类
    excel小技巧-转置(表的横向纵向倒过来)
    excel小技巧-提取填充
    excel小技巧-分列
    Java switch case语句
    if...else
    12.15个人总结
    12.9个人总结
    11.29个人总结
    11.25日个人总结
  • 原文地址:https://www.cnblogs.com/philospy/p/3995511.html
Copyright © 2011-2022 走看看