• 读书笔记《征服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没有参数的函数指针)

  • 相关阅读:
    使用hibernate利用实体类生成表和利用表生成实体类
    多线程循环打印ABC
    maven在整合springmvc+hibernate运行时遇到的一些问题
    checkbox属性获取
    glib中关于线程池的一个实例
    阅读英文文献总结的专业词汇
    网络流分类领域牛人
    锐捷s3550千兆交换机配置端口镜像
    转载Wireshark过滤语法
    DispatcherServlet处理流程
  • 原文地址:https://www.cnblogs.com/philospy/p/3995511.html
Copyright © 2020-2023  润新知