资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第1章 踏上征程前的思想动员 首先要恭喜读者,无论出于什么样的原因,读者 选择了自学C语言,这是一门强大而灵活的语言, 同时也代表着学习上会遇到很多困难; 但同样要恭喜读者选择了本书,因为笔者是十几 年前自学的C语言,知道学习C语言的酸甜苦辣, 因此笔者有信心带领读者轻松的学好C语言,用好 C语言。 本书面向的是纯C的初学者,初次接触C语言或者 头一次接触编程领域。 如果读者有过其他语言的编程经历,当然能帮助 理解C语言。1.1 为什么选择C语言 为什么要选择C语言? 这个问题是每个读者要问自己的问题,如果掌握 了C语言之后,还是不能满足读者的需求,那么学 习C语言就是一件浪费时间的事情。 笔者尝试回答这个问题,如果笔者的回答不能令 读者满意,也许读者该选择另外一门语言。1.1.1 在计算机领域,C语言大小通吃C语言的应用极其广泛,从网站后台,到底层操作系统,从 多媒体应用到大型网络游戏,均可使用C语言来开发。 (1)C语言可以写网站后台程序。 (2)C语言可以写出绚丽的GUI界面。 (3)C语言可以专门针对某个主题写出功能强大的程序库 ,然后供其他程序方便使用,从而让其他程序节省开发时 间。 (4)C语言可以写出大型游戏的引擎。 (5)C语言可以写出另一个语言来。 (6)C语言可以写操作系统和驱动程序,并且只能用C语言 编写,Linux操作系统的全部源代码都可以从网上得到,要 深入了解操作系统的运行秘密,懂C语言,就能看懂。 (7)任何设备只要配置了微处理器,就都支持C语言。从 微波炉到手机,都是由C语言技术来推动的。1.1.2 掌握了C语言,其他类似语言不学自通 当掌握了C语言后,再去学习其他面向过程的语言 ,最多一个星期就能学会。 因为万变不离其宗,只是语法上有些许更改,而 思想却没有更改。 有些语言,甚至1个小时就明白如何使用。1.1.3 C语言久经考验,有现成的大量优秀代码和资料 因为C语言已经存在很多年了,它有广泛的使用团 体并且有大量的现成代码可以利用。 这就使读者能在过去程序的基础上,快速和高效 的编写新的算法和函数。 C语言是一个开源组织的语言。全球著名的开源组 织网站“www.sourceforge.net”,能找到任何想要 的开源代码。C语言使用者众多,讨论者也就众多 ,有数不尽的资料可以学习。1.1.4 简洁、紧凑,使用方便、灵活,功能强大,执行效率高 所有的优点都是基于C语言的简洁、紧凑,使用方 便、灵活,功能强大,执行效率高。C语言仅有32 个关键字,9种控制语句,却能完成无数的功能。 某些方面C语言可能确实不如其他语言优秀,比如 字符串处理方面,就不如Perl语言;比如数值计 算方面,就不如Fortran语言;比如人工智能方面 ,就不如Lisp语言。可是这些语言在其他方面却 远远不及C语言。而且C语言有其他诸如表达力强 ,移植性好的特点,现在也许读者还无法理解, 随着时间的推移,将会慢慢了解到。 如果上面的回答还是不能满足读者的需求,那么 最后一条,一定可以满足:精通了C语言,工作不 用愁!1.2 如何学好C语言无论出于什么目的,一旦下定决心准备学习C语言,就要端正思想, 因为听说C语言难,所以觉得学不好,是不可取的。只要读者掌握一 些方法,克服心理上畏难、不轻言放弃,是完全可以学好的。 (1)多动手少求人!所有的问题都可以通过自己编写代码观察结果 解决。凡是可以通过编写代码观察到结果的问题,都不应该成为一个 问题。 (2)多学习优秀代码。 C语言灵活简洁,即使编写出不好的代码,也可以编译出可以运行的 程序来,但是却有更优秀的编程技巧,可以让程序更好的工作,这就 要求读者多学习其他人优秀的代码。 (3)多以人类的思考方法来类比计算机。 计算机非常简单,需要什么数据,如何获取这些数据,得到后如何存 放,如何处理,处理后如何表现,多问些为什么,如果人类来处理, 需要什么东西,一旦理解了计算机的处理过程,编程,就是一件非常 轻松的事情了。 (4)C语言只是一个基础设施,要想编写强大的软件,必须学习相关 操作系统的API(应用程序编程接口),熟悉其他类库的使用,才能 开发出满足用户需求的软件来。 1.3 什么是语言,什么是C语言 也许读者读到这里,对于C语言到底是什么还很模 糊。有必要做一个解释。一提到语言这个词,人 们自然想到的是像英语、汉语等这样的自然语言 ,因为它是人和人相互交流信息不可缺少的工具 。而今天,计算机遍布了我们生活的每一个角落 ,除了人和人之间的相互交流之外,我们必须和 计算机交流。用什么样的方式和计算机做最直接 的交流呢?人们自然想到的是最古老也最方便的 方式语言。1.3.1 什么是语言类比人类的语言,比如汉语言,英语言,法语言,就可以总结些 共性的东西出来: (1)语言是用来交流沟通的。有一方说,有另一方听,必须有两 方参与。这是语言最重要的功能。语言就是用来表达意思传递信 息的。说的一方传递信息,听的一方接受信息;说的一方下达指 令,听的一方遵从命令做事情。没有语言,双方就无法交流沟通 ,也就只能单兵作战,独自发展,也许人类就灭亡了。甚至在远 古时代,没有语言,人类可以通过眼神,通过动作,通过叫唤来 传递信息,而这些,也可以看作是语言。这引出了语言的另一特 点: (2)语言有独特的语法规则。交流双方都了解明白并遵守这些规 则。一个只会说汉语的中国人,和一个只会说法语的法国人,如 果戴上面具,只通过嘴巴发出声音互相交流,结果一定是鸡同鸭 讲,信息完全传递不出去。为什么?因为互相不知道对方的语法 规则,当然听不懂了。为什么要戴面具?为什么只能通过嘴巴? 因为人类的一些面部表情,身体动作,这些却是相通的,不通过 声音,而通过肢体语言,也能多少表达出一些意思来。1.3.2 什么是机器语言计算机是一个忠实的仆人,时刻等候着主人的命令。如何 才能使计算机听话呢?当然是用计算机听得懂的语言去命 令它了。计算机的大脑或者说心脏就是CPU,它控制着整个 计算机的运作。每种CPU,都有自己的指令系统。这个指令 系统,就是该CPU的机器语言。机器语言是一组由0和1系列 组成的指令码,这些指令码,是CPU制作厂商规定出来的, 然后发布出来,请程序员遵守。比如下面是某CPU指令系统 中的两条指令: 1000000加 1001000减 要让计算机干活,就得用这样的语言去命令它。这样的命 令,不是一条两条,而是上百条。由于不同型号的计算机 其机器语言是不相通的,按着一种计算机的机器指令编制 的程序,不能在另一种计算机上执行。1.3.3 计算机如何执行指令 是一个非常简单的示意图,表示个大概意思,实 际上并不是这么简陋,但其核心思想却正如图所 示。1.3.4 什么是汇编语言在倒下了一批用机器语言编程的程序员后,一批顽强而聪 明的先行者终于发明了汇编语言。一门人类可以比较轻松 认识的编程语言。只是这门语言计算机并不认识,所以人 类还不能用这门语言命令计算机做事情。如同上文提到过 的中国人和法国人交流一样,如何才能让中国人说的话法 国人明白呢? 聪明的读者一定想到了:翻译!是,一个既懂汉语又懂法 语的人,不就可以将中文翻译给法国人听么,二者不就又 可以继续交流了么? 所以,有一类专门的程序,既认识机器语言,又认识汇编 语言,而且还很聪明,知道怎么把汇编语言翻译成机器语 言。于是,人类和机器间的交流,终于又畅通了,而且人 类可以比较轻松的编写程序了。1.3.5 面向过程的语言汇编语言和机器语言都是面向机器的,机器不同,语言也 不同。既然有办法让汇编语言翻译成机器语言,难道就不 能把其他更人性化的语言翻译成机器语言?1954年, Fortran语言出现了,其后相继出现了其他的类似语言。这 批语言,使程序员摆脱了计算机硬件的桎梏,把主要精力 放在了程序设计上,不在关注低层的计算机硬件。这类语 言,称为高级语言。同样的,高级语言要被计算机执行, 也需要一个翻译程序将其翻译成机器语言,这就是编译程 序。 这类高级语言解决问题的方法是分析出解决问题所需要的 步骤,把程序看作是数据被加工的过程。基于这类方法的 程序设计语言成为面向过程的语言。C语言就是这种面向过 程的程序设计语言。1.3.6 什么是C语言 这本书就是告诉读者,什么是C语言的书。 如果读者对C语言的历史比较感兴趣,可以参考其 他相关书籍。 本书不再罗列众人皆知的东西了。 一般来说,C语言可以简称C,注意C是大写的。 至于什么是C语言,请读者自学完本书后,作一个 定义。1.4 刻认识程序如何生产出来程序开发周期在Windows下,利用“记事本”(notepad.exe)这个小软件,我们 可以输入文字,编辑文字,然后保存到计算机硬盘上。保存到硬 盘上的数据以文件的形式存在,比如将文件保存到“d:”,在保存 的时候,“记事本”软件会提示用户输入文件名和保存的路径,我 们以“C.txt”作为文件名,以“d:”作为文件路径。保存后,通过 Windows的文件浏览器定位到“d:”就可以看到文件“C.txt”。同样 的,画图小软件可以信手涂鸦,也能保存一个扩展名为bmp的文件 到硬盘上。如图13。1.4.1 编辑C源代码编辑就是 (1)逐个输入字符,如汉字、英文、标点符号或者其他可 以用键盘输入的字符; (2)通过插入、删除、移动、复制、粘贴等方法修改已经 输入的字符; (3)将输入修改完毕的所有字符保存到硬盘上。 一篇由汉字、英文、标点符号或者其他可以用键盘输入的 字符组合的内容被称作文本。能够进行文字编辑的软件被 称作编辑器。 源代码通俗的讲就是程序员输入编写的符合C语言语法规则 的文本。比如下列片段就是一段源代码: void main(void) printf(“nHello World!”); 1.4.2 编译C源代码编译是把C语言源代码翻译成用二进制指令表示的目标文件。注意 这里的目标文件与机器语言还有一段距离,并不是真正的机器语 言,所以不能被计算机直接运行。编译着重于“译”,就是翻译。 声明:读者要注意区分编辑和编译的概念。虽然一字之差,意义 却大不相同。编辑,是指对文本的修改,插入,删除。而编译却 是将编辑好的源代码翻译成目标文件。 编译过程由C编译系统提供的编译程序完成。编译程序简称为编译 器。编译程序运行后,自动对源程序进行句法和语法检查,当发 现错误时,就将错误的类型和所在的位置显示出来,提供给用户 ,以帮助用户修改源程序中的错误。用户可以继续利用编辑器来 方便的修改程序。修改好后,重新进行编译直到编译通过。如果 未发现句法和语法错误,就自动形成目标代码并对目标代码进行 优化后生成目标文件。 目标程序文件的扩展名“.obj“是目标程序的文件类型标识。不同 的编译系统,或者不同版本的编译程序,它们的启动命令不同, 生成的目标文件也不相同。扩展名有时候也不一定相同。当然格 式也不相同。但是其作用相同。1.4.3 链接目标文件目标文件计算机还是不能执行的。多个源代码对应了多个目标文 件,此时还没有将其组合装配成一个可以运行的整体。链接过程 是用链接程序将目标文件、第三方目标文件、C语言提供的运行时 库文件链接装配成一个完整的可执行的目标程序。链接程序简称 链接器。 可执行程序文件的扩展名“.exe”,是可执行程序的文件类型标识 。绝大部分系统生成的可执行文件的扩展名是“.exe”,但UNIX系 统中,生成的可执行文件自动确定为“a.out”,除非在编译时用户 特别规定自己的文件名。有的C编译系统把编译和连接放在一个命 令文件中,用一条命令即可完成编译和连接任务,减少了操作过 程。 开发程序,除了程序员编写的自己的代码外,有时候会使用其他 人提供的库文件。比如读者要编写一个mp3播放器软件,对于mp3 解码部分,因为已经有现成的
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号