您的位置:首页 > 其它

《The C Programming Language》读书笔记1

2006-04-03 23:11 344 查看
笔记范围:《The C Programming Language》第一章

本章的内容是很容易理解的概念,对于编程学习者是最起码的知识,但是有些东西还是被初学者忽视。以至于在各个技术社区的初学者问题中层出不断。其实这些东西,在第一章就得到了比较完整的解释,下面只是把他们提出来强调一下,
第一.关于循环终止。在很多书籍中都存在这样的循环语句:
while ( getchar() != EOF ) {….}
很多人不明白这个EOF为何物?具体如何操作?以至于让上面的语句变成了无限循环,呵呵,其实EOF。是文件结束符(end of file),在第七章有说明。其为系统常量。值为-1,当然你在终端输入-1,循环并未结束,why?how to do?恩,你在《c专家编程》里会了解到,c的第一批使用者都是系统设计者和编译器设计者。在他们的理念里,信息往往以文件为单位的。这个标志只是文件结束的状态,一般不由用户提供。而键盘等输入端在os中是个极其特殊的文件。需要用户显式标志文件结束。说是系统常量当然有着系统依赖性,因此不同的系统标志方式就完全不同。Windows下是ctrl+z。linux下是ctrl+D.另外EOF其实不用显式说明。上面的代码与此完全等价:
while( getchar() ) {……}
第二.声明和定义。尽管这个问题地球人都知道,但是真正说的清楚的人并不多。有人认为变量的声明和定义没有什么区别。有人认为这个与初始化有关系(我曾经就这样白痴,汗~~~),对于后者那就是根本就不明白这两个概念,声明只是给编译器一个提示,有这么个名字存在于程序中,和运行环境毫无关系。可以重复出现,定义是具体分配内存空间和指定了变量的位子(左值),在同一域中只能出现一次;对于前者的观点。在单文件程序中。几乎找不到错误。但如果你把这样的句子放人头文件,int a;一旦这个头文件被重复包涵。必然出现链接错误。其实这样:extern int a;//声明int a;//定义
第三.字符数组和字符串。有人认为这两个是同一概念,是这样吗?不,完全不是,前者为容器(数据结构),后者为数据。这样说也许太理论化,好,我们来改写下那个hello world#include <stdio.h>
#include <stdlib.h>
int main()
{ printf( "/0hello world " );
system("pause");
return 0;
} 呵呵,什么也没有?是的。还记得字符串是怎么结束的吗?/0 "/0hello world "是个常量数组。但是字符串却是“”。字符数组和字符长度是不一样的,
这章尽管非常简单,但是每个例子都经典之作,你能从代码中学到文字中不能学到的东西。建议你每个都抄一遍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: