代码改变世界

重学C语言 一些基本概念

2011-05-09 00:05  iLoae  阅读(387)  评论(4编辑  收藏  举报
今天又买了一辆捷安特OCR3300,之所以说又,那就是之前丢了一辆,2400块大洋啊,郁闷痛苦了很久,今天痛下决心,又买了一辆,古语叫做续弦,还买了两把锁,前面一个,后面一个,这样能稍微保险一点,整体的负重稍微增加了一些,但是安心了,上次丢车子就是因为对公司门前的安全状况太大意了,以为有保安又有监控,可惜啊,警匪一家的状态在朝阳区是常见的,编造的破案故事,堕落的天上人间,嗯,不说了,还望客官们引以为戒。

C语言由代码到可执行程序的通常分三步:预处理、编译、链接。

预处理的过程是由预处理器完成的,预处理的过程相当于对C源文件进行最后一次代码填充或修改,这些填充或修改的规则在源代码里是以#号开头的,预处理的功能极为灵活强大,后面(如果我能坚持到那时候)会仔细介绍。

编译:经过预处理的文件下一步就是进入编译器,它会把源代码转换为目标代码(也就是机器码)和连接器信息,这个过程就是编译,有本伟大著作叫编译原理,有空可以参考一下。

链接的作用在这本《C语言程序设计现代方法》中文版里解释的很含混,鄙视那些唯利是图的叫湿叫兽,链接器主要实现两个功能:

  1. 解析未定义的符号引用,将目标文件中的占位符替换为符号的地址。
  2. 对程序中各目标文件的地址空间的组织,这可能涉及重定位工作。

说白了就是告诉处理器,怎么样使用这些机器码。

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版)

原文链接:http://www.demosir.com/%E9%87%8D%E5%AD%A6c%E8%AF%AD%E8%A8%80-%E4%B8%80%E4%BA%9B%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5.html