重学C语言 一些基本概念
2011-05-09 00:05 iLoae 阅读(388) 评论(4) 编辑 收藏 举报C语言由代码到可执行程序的通常分三步:预处理、编译、链接。
预处理的过程是由预处理器完成的,预处理的过程相当于对C源文件进行最后一次代码填充或修改,这些填充或修改的规则在源代码里是以#号开头的,预处理的功能极为灵活强大,后面(如果我能坚持到那时候)会仔细介绍。
编译:经过预处理的文件下一步就是进入编译器,它会把源代码转换为目标代码(也就是机器码)和连接器信息,这个过程就是编译,有本伟大著作叫编译原理,有空可以参考一下。
链接的作用在这本《C语言程序设计现代方法》中文版里解释的很含混,鄙视那些唯利是图的叫湿叫兽,链接器主要实现两个功能:
- 解析未定义的符号引用,将目标文件中的占位符替换为符号的地址。
- 对程序中各目标文件的地址空间的组织,这可能涉及重定位工作。
说白了就是告诉处理器,怎么样使用这些机器码。
C语言的注释
首先说一下注释的作用,注释不仅仅是可以标注一行代码或者一个函数,也可以标记一个文件或者一处修改,这就是注释伟大的地方,可以提高代码的可读性和可维护性。
再说一下注释的形式,C语言里有两种
- C89里定义的
/*This is the only type which is supported in C89*/
优点是可以注释多行,缺点是必须有一个结尾,如果结尾的*/漏掉的话,这个注释就会延续到下一次*/的出现。
- C99里添加了另外一种注释方法
//This is added in C99.
这种注释目前来看是使用最广的一种方式,他的优点是作用域尽在一行,这样就避免了C89注释的缺点。
到底是用哪种注释方法,这要看具体环境而定了。
和变量相关的内容
在程序执行的过程中,总是遇到需要临时存储的结果(从广义上来说,程序里面都是变量不管是函数,常量,还是类),变量就是给存放这些值用的。
一般的变量都是保存在内存中的一块空间,所以在使用变量的时候要做一件事,告诉内存需要什么种类的空间,这里说的种类,就是类型。把这个两个小内容联合起来,就是下面的操作--声明:
int result;
这句话告诉编译器,给我们一块int大小叫做result的内存空间。
- 关于声明C89与C99也有一些不同,C89中要求声明必须在在一个块的开始(一个程序块开始的时候,必须把所有声明完成,否则基于C89的编译器会报错),而C99则放宽了这种要求,只要在变量使用前声明就可以了。这同样也涉及到了兼容问题。
赋值与初始化
result=100;
这样的一个过程就是赋值,很简单。
当声明的同时,给变量赋值就是初始化:
int result=100;
初始化是可选的,最好是养成初始化的习惯,这样或许可以较少一些后期的隐患。
常量和常量的名字
当程序含有常量的时候,建议给这些常量一个名字,这样,常量就会有一个明确的含义,可以采用宏定义的特性来给给常量命名。
#define ERROR 100 result=ERROR;// result=100
这里的#define是预处理命令,当编译时预处理器会把每一个宏替换为其表示的值。
- C程序里有一个延续几十年的规范,变量使用小写字母与下划线的方式命令(this_is_variable),宏的名字用大写字母与下划线组成(THIS_IS_MACRO)。
下载英文原版 请以留言方式留下您的邮箱
中文版购买链接:C语言程序设计:现代方法(第2版)