码迷,mamicode.com
首页 > 其他好文 > 详细

《C专家编程》读书记录

时间:2015-06-05 22:36:36      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

其实,这本书适合没事的时候翻翻,随便打开哪一页,应该都可以看下去的。总体来说,写的比较欢脱,不像《C和指针》和《C陷阱和缺陷》的章节标题那么严肃,有时候还以为自己在看科技杂志。不过,理解书里面的内容反而需要有较高的C语言基础,内容结构比较松散,如果觉得没有逻辑性,可能是语言基础还掌握的不够。

比较喜欢第1章关于C语言的介绍,前世今生什么的。

 

 

2015年5月1日  星期五 天气 雨

第1章  C:穿越时空的迷雾

  • C语言的史前阶段:BCPL->B->New B->早期C
  • C语言的早期体验(评:历史原因造成了现在C语言的一些语言特性)
  • 标准I/O库和C预处理器
  • K&R C   

      技术分享

  • 今日之ANSI C
  • 它很棒,但符合标准吗:不可移植代码,坏代码,可移植代码
  • 编译限制,ANSI C标准对一个能够成功编译的程序的最小长度做了限制
  • ANSI C标准的结构,与K&R C相比,最重要的新特性就是原型

 

 

第2章 这不是Bug,而是语言特性f

  • 编程语言的细节,Fortran语言经典错误,DO 10 I=1.10和DO 10 I=1,10的区别。

    分析编程语言缺陷的一种方法是把所有的缺陷归类为3类:不该做的做了,该做的没做,该做但做的不合适。

  • 多做之过
    • switch语句中的fall through  
    • 相邻字符串常量被自动合并  
    • 太多的缺省可见性,即默认的函数作用域过宽
  • 误做之过,语言中有误导性质或是不适当的特性
    • 重载,许多符号甚至关键字被重载
    • 有些运算符的优先级是错误的(ANSI C标准由于种种历史原因,没有在优先级方面采取措施)
  • 少做之过,语言应该提供但未能提供的特性
    • 空格问题
    • 注释风格
    • 编译器日期被破坏
    • lint程序绝不应该被分离出来,lint程序寻找bug,早用,勤用

 

 

第3章 分析C语言的声明

  • 只有编译器才会喜欢的语言,声明
  • 声明如何形成,至少一个类型说明符+有且只有一个声明器+零个或更多声明器+一个分号
  • 优先级规则,括号内的->后缀操作符->前缀操作符,按照这个顺序优先级从高到低
  • 通过图表分析C语言声明
  • typedef可以成为你的朋友,为一种类型引入新名字,而不是为变量分配内存
  • typedef int x[10]和#define x int[10]的区别
    • 可以用其他类型说明对宏类型名进行扩展
#define peach int  
unsigned peach i; /*没问题*/
typedef int banana;
unsigned banana i;/*错误,非法*/
    • 连续几个变量声明中,typedef保证所有变量为同一种类,#define定义则无法保证

  • typedef struct foo {..foo;}的含义,不同的命名空间内使用同一个名字,bad habit

 

 

第4章 令人震惊的事实,数组和指针并不相同

  • 数组并非指针
  • 我的代码无法运行
  • /*file 1*/
    int mango [100];
    /*file 2*/
    extern int *mango;
  • 什么是声明,什么是定义
    • 声明,描述其他地方创建的对象
    • 定义,确定对象类型并为其分配内存,只能出现在一个地方
  • 使声明和定义匹配,指针的外部声明与数组不匹配,代码当然没办法运行
  • 指针和数组的区别
指针 数组
保存数据的地址 保存数据

间接访问数据,首先取指针内容,把它作为地址,然后从这个地址取地址。如果指针有一个下标[I],就把指针的内容加上I作为地址,从中提取数据

 

直接访问数据,a[I]只是简单的以a+I为地址取得数据
通常用于动态数据结构 通常用于存储固定数目且数据类型相同的元素
相关的函数为malloc().free() 隐式分配和删除
通常指向匿名数据 自身即为数据名

《C专家编程》读书记录

标签:

原文地址:http://www.cnblogs.com/sherPur/p/4555602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!