打印本文 打印本文  关闭窗口 关闭窗口  
等级考试二级C专家编程读书笔记(下)
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:57:53  文章录入:杜斌  责任编辑:杜斌

  1、早用lint,勤用lint,不要等到最后才用lint。lint是软件的道德标准
 
  2、关于typedef。
  先看一个声明:void (*signal(int sig, void (*func)(int))) (int);
对于它,可以简化为:
typedef void (*ptr_to_func) (int)
ptr_to_func signal(int, ptr_to_func)
  对于像以上那个复杂的typedef声明,你大可不必深入的去记忆、研究,只需要把它替代,化简为一个声明,那意义就豁然开朗了。
注意:
  ①不要在一个typedef中放入几个声明器;
  ②千万不要把typedef嵌到声明中间部分。
typedef与define的区别:
  ①可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这样做。
  ②在连续声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而用#define定义的类型则无法保证。
 
  3、数组与指针并不相同,某些情况下,他俩是一样的,不过也存在情况,他俩不一样例如:
  文件1: int mango[100];
  文件2: extern int * mango;
这是不同的,相当于把整数和浮点数混为一谈。
 
  4、Turning实验,人工智能,人机对话,都是十分有意思的东西。
 
  5、堆区域用于动态分配的存储,也就是通过malloc(内存分配)函数获得的内存,并通过指针访问。堆中所有东西都是匿名的————不能按名字直接访问,只能通过指针间接访问。
  被分配的内存总是经过对齐,以适合及其最大尺寸的原子访问。
  堆的末端由一个称为break的指针来标识。当堆管理器需要更多内存时,它可以通过系统调用brk和sbrk来移动指针。一般情况下,不必自己显示调用brk,如果分配的内存容量很大,brk最终会被自动调用。

打印本文 打印本文  关闭窗口 关闭窗口