C语言概述及如何在VS中进行C语言编程.docx
《C语言概述及如何在VS中进行C语言编程.docx》由会员分享,可在线阅读,更多相关《C语言概述及如何在VS中进行C语言编程.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言概述及如何在VS中进行C语言编程.docx](https://file1.bdocx.com/fileroot1/2023-2/5/baa95a79-e35b-46a8-854c-684c00e7e16f/baa95a79-e35b-46a8-854c-684c00e7e16f1.gif)
C语言概述及如何在VS中进行C语言编程
第1章概述
作为本书的开始,我们不涉及C语言的语法和使用细节,先来看一看这门语言的相关背景,以及其在计算机程序中举足轻重的地位。
然后,为给后面的学习作准备,来看看如何建立C语言的开发环境。
最后,抛砖引玉,说说笔者自己的C语言学习经验。
1.1C语言简介
本节先来看一看C语言的相关背景介绍。
在众多的计算机语言之中,它到底处于一个什么样的位置?
相对于其他计算机语言而言,它有什么优势和弱点?
另外,C语言适合做些什么样的软件开发?
带着这些问题开始本节的学习。
1.1.1C语言的位置
图1.1是计算机语言发展过程的一个简单的示意图,只展示了一些主流的计算机语言的出现时间和顺序,不是很全,但是足以显示C语言与其他语言的关系了。
图1.1计算机语言发展史(简)
从图1.1中可以看出,所有的高级语言都起于Fortran,之后就有不同的分支了。
C语言也是其中的一个分支,主要起源于BCPL语言(BasicCombinedPogrammingLanguage),是对BCPL语言的一种简化。
C语言之所以被称为C语言,是因为BCPL语言被称为B语言,C语言不能再取BCPL的首字母了,因此,取BCPL的第二个字母C,C语言因此得名。
C语言诞生于20世纪70年代,之后不断完善、标准化。
目前流行的C语言编译系统大多数是以ANSIC(美国国家标准协会(ANSI)对C语言发布的标准)为基础进行开发的。
但不同版本的C编译系统所实现的语言功能和语法规则略有差别。
现在比较通用的是1990年,国际标准化组织ISO(InternationalOrganizationforStandards)接受的1989年的ANSIC标准,并以它作为ISOC90标准——ISO/IEC9899:
1990。
1.1.2C语言的优缺点
任何一种计算机语言都有它的优势和不足,C语言也是如此。
不要以为C语言都那么老了,是不是没用了,也不要以为C语言是万能钥匙,什么问题都能解决好。
1.C语言的优势
C语言的优点细数起来,估计手指加脚趾都不够用,但是这些优点可以总结为一点,那就是“灵活”。
C语言的灵活主要体现在同一件事情可以通过好几种方式实现,并不会定死什么问题非得用什么方式来解决。
C语言之所以灵活,是因为它有下面这些属性,保证了它天生就是一种灵活的语言。
❑结构丰富多变:
C语言提供了三种基本的程序设计结构,通过这三种程序设计结构,就能够完成所有的计算机逻辑。
而且每种结构中,又有略有差别的不同的形式,你可以选择自己喜欢的任意形式来完成需要的功能。
❑提供了多种基本运算:
C语言提供了30多种运算符号,分为15个运算优先级,不仅可以完成基本的数学运算,还可以完成类似于计算机底层操作的位运算。
有的运算符号在不同情况下的含义和使用方式也是不同的,而且可以通过强制结合来改变运算符的优先级。
❑丰富的数据类型:
数据类型决定了一种语言可以用来操作什么样的数据。
C语言的数据类型真可谓丰富,从基本的几种数据类型,到复杂数据类型,再到可以自定义的数据类型。
从某种程度上来说,C语言可以用来操作任何类型的数据。
❑程序设计自由,语法限制不大:
C语言代码在书写的时候,从书写格式到代码组织限制都不是很大,所以写代码的风格可谓百花齐放,什么样的都有。
只要符合最基本的要求,无论你怎么写,都是对的。
只不过代码风格不好,不利于阅读和理解。
对于上面提到的C语言的各种优点,在没有接触C语言之前,可能大家还体会不到。
不要紧,相信大家学完这本书之后,回过头来看看这一部分内容,一定会有所感悟的。
2.C语言的不足
一个事物,往往最强的地方也就是它最弱的地方。
C语言的弱点也正是由于它的“灵活”造成的。
因为太灵活了,怎么样都行,对计算机的控制太过自由,稍不留意就会出现错误!
所以,能灵活运用C语言,也是一种能力啊。
1.1.3C语言适合什么开发
由于C语言本身的灵活性,导致它可以很好地处理复杂和具有差异的环境。
因此,它至少适合进行下面三类软件的开发。
1.多平台通用软件
所谓多平台通用软件,就是指这个软件可以在很多系统上使用。
例如,如果想让你写的同一个程序很好地运行在DOS、Windows98、WindowsXP、WindowsCE、Linux、UNIX等多个操作系统上,C语言确实是个不错的选择。
知道Apache吗?
它是一个开源Web服务器工程,其中的HTTP服务器可以运行于很多平台,Windows、Linux和UNIX都是可以的,这个服务器就是用C语言开发的。
2.操作系统
由于C语言可以很自然地与汇编语言结合,又比汇编语言好用,能够很灵活地控制计算机硬件,因此很适合开发操作系统。
Windows很老的版本都是用C语言写的,之后改用C++了,不过C++是兼容C语言的。
Linux和UNIX系列的操作系统内核几乎都是用C语言写的,而且很多运行在板子上的嵌入式操作系统基本都是用C语言结合汇编写的。
如果你真想做个操作系统,C语言绝对可以胜任。
3.复杂运算软件
之所以说C语言适合进行复杂计算软件的开发,是因为:
(1)复杂计算软件本身很单纯,只需要计算机进行计算就可以了;
(2)C语言本身有丰富的运算功能,完全可以实现复杂计算功能;(3)因为C语言是一种接近底层语言的高级语言,所以它写出来的程序在计算机上的运行效率很高。
所以,要想做一个需要复杂而高效计算功能的软件,选择C语言绝对不会令你失望的。
如果你经常做科学计算,用过MATLAB软件,它其中一部分也是用C语言写的。
1.2C语言的开发环境
“工欲谋其事,必先利其器”。
要想学好C语言,选择一个好的C语言开发环境是很有必要的,而且是首要任务。
在本节中,来看看C语言的开发过程,教大家学习Windows平台上主流的C语言开发工具VisualStudio的基本使用方法。
1.2.1编辑器、编译器和链接器
编辑器、编译器和链接器是使用C语言进行开发所需要的三个最基本的工具,而且也是最小的工具集,缺一不可。
从图1.2所示的一个可以运行的程序的生成过程,就可以看出编辑器、编译器和链接器在这条可执行程序“生成链”上所处的位置了。
从键盘一句一句敲出代码到一个可以在操作系统上运行的程序,必须经过这三个工具的处理才可以。
接下来逐个看一看这三个程序的作用。
图1.2可执行程序的生成过程
1.编辑器
编辑器的作用就是将我们在键盘上的敲击转换成写有代码的文件,这个文件被称为程序源文件,或者直接叫做源文件。
这个编辑器在形式上很像是一个记事本程序,可以在上面添加、删除、插入字母或者文字,并且可以将这些字母和文字保存到一个文件中。
其实,记事本是可以作为C语言编辑器的,我们在记事本上编辑的字母和文字就是将要学习的C语言代码。
这些代码保存到一个文件中,供下次编辑或者直接交给编译器去处理,这个文件就是源文件。
不过,记事本可以算是最简单和最不专业的C语言编辑器了!
一般而言,专业的C语言编辑器都有其他方便C语言代码编辑的功能。
例如,最基本的语法高亮功能,所谓语法高亮,就是程序中不同用途的字母或者文字会以不同的颜色显示出来,让你一看就知道正在写的代码是做什么用的。
越高级、越专业的C语言编辑器,越能最大程度地方便你写C语言代码。
其实,只要能将键盘的输入转换成源文件的就可以称为编辑器。
一般的编辑器也是可以编写C语言代码的,只不过,比起专业的C语言编辑器会显得难用和不舒服一点。
2.编译器
编译器的作用是将保存着我们所写代码的源文件,转换成一种称为目标文件的二进制文件。
源文件是我们能看懂的,是给我们用的。
而二进制文件是计算机能看懂的文件,是给计算机用的。
计算机根据二进制文件中的内容决定该做什么事情,不该做什么事情。
在这个转换过程中,编译器先对源文件中的内容进行扫描,根据C语言的语法要求,逐个检查源文件中出现的每一个字母或者文字。
如果这些文字符合C语言的语法要求,那么它就根据这些字母和文字的含义将其转换成计算机可以识别的二进制代码,并将其按照一定的格式保存在二进制文件中。
如果某些地方的字母或者文字不符合C语言的语法要求,那么编译器将报告所有不符合的地方,不再生成二进制文件,只有改正所有不符合语法要求的地方,让编译器重新对改正的源文件进行转化,才可以生成二进制文件。
编译器对源文件的转换过程在计算机中有个专业的名字,叫“编译”。
编译器也因此得名,表示编译的工具。
3.链接器
一般所写的程序最终是要运行在某个操作系统上的。
因此,即使是一个很简单的程序也需要操作系统来处理很多事情,才能使程序正常运行。
操作系统往往会提供一些被称为开发库的二进制文件,编译器产生的目标二进制文件只有和这些库二进制文件结合才能生成一个可执行程序,才能使我们写的程序正常地运行于某个操作系统之上。
另外,有的时候我们可能会开发一些专业的或者功能很复杂的软件,这类软件要从头做,往往很麻烦。
这个时候,就得看看其他公司或者业界有没有提供此类功能实现,可以买过来使用。
往往买过来的也是一堆库二进制文件,只有把这些库二进制文件和编译器产生的目标二进制文件结合起来才能产生需要的可执行程序。
链接器所做的工作就是将所有的二进制文件链接起来融合成一个可执行程序,不管这些二进制文件是目标二进制文件还是库二进制文件。
链接器将二进制文件融合的这一过程,在计算机中也有一个专业的名字——“链接”,链接器也因此得名,表示链接的工具。
1.2.2集成开发环境
按照前面介绍的可执行程序的生成过程,要想用C语言写一个可以真正运行于某个操作系统之上的程序,至少需要编辑器、编译器和链接器三个开发工具。
集成开发工具也是一个工具,不过它的功能更强大,因为它集成(包含)了编辑器、编译器、链接器和其他用于开发的工具。
1.直观印象
先来直观地感受一下,一个真正的集成开发环境是什么样的。
图1.3所示就是一个Windows操作系统上的集成开发环境,Windows上的其他集成开发环境,以及其他操作系统上的集成开发环境基本都长这个样子。
图1.3集成开发环境
集成开发环境也是一个程序,它是一个用于开发的程序。
图1.3显示的集成开发环境就是一个标准的Windows应用程序,有点像我们经常使用的OfficeWord。
一个集成开发环境基本都是以窗口的形式展现在我们面前的,如图1.3所示。
在这个窗口中一般会包含三个部分:
菜单栏、工具栏和子窗口。
图1.3中最上边的“文件”、“编辑”等一行就是菜单栏,菜单栏之下的一行图标组成了工具栏,工具栏之下被分成一块一块的就是子窗口了。
基本上所有的集成开发环境都是由这三部分组成的,只是组成的方式不同而已。
例如,菜单栏中的内容、工具栏中的图标的位置和数目、子窗口的大小和数目等会有所不同。
大家先过一下眼就好,后面会讲到如何使用这个集成开发环境。
2.集成开发环境中的编辑器
集成开发环境是用来更好地开发程序的,它一定会包含生成一个可执行程序所必需的三个基本工具。
这里先来看看第一个工具——编辑器在集成开发环境中的什么地方!
集成开发环境中的子窗口,往往有一个或者多个会用来完成编辑器的编辑、显示功能。
菜单栏和工具栏中的某些菜单和按钮会用来完成编辑器的文件新建、保存等功能。
图1.4所示就是图1.3所示的集成开发环境中编辑、显示代码的编辑器。
这个编辑器算得上一个高级的或者说专业的C语言编辑器了。
因为至少从图1.4中可以看出,所写的代码中有不同颜色的单词,表明这个编辑器可以用颜色区分我们所写的代码中的不同部分,方便代码的阅读和编辑。
其实它还有很多更强大的功能呢,这里就不一一赘述了,留待读者自己发掘吧!
这个集成开发环境中哪些菜单和工具是用在编辑器中的,在后边讲这个工具使用的时候,再详细讲解。
这里大家知道集成开发环境中有一个子窗口是用于编辑代码的就可以了,它是编辑器的核心,也是我们以后会经常使用的。
3.集成开发环境中的编译器和链接器
找到了集成开发环境中的编辑器以后,再来看看集成开发环境中的编译器和链接器吧!
集成开发环境中有一个子窗口是和编译链接有关系的,它可以将编译器和链接器在编译链接过程中的报告全部显示出来。
这个窗口一般被称为输出窗口,因为编译链接的所有报告都是通过它输出的。
图1.3所示集成开发环境的输出窗口如图1.5所示。
图1.4代码编辑、显示窗口图1.5输出窗口
这个输出窗口只是一个“前台”而已,真正为我们干事的还是“编译器”和“链接器”这样的工具,或者说是程序。
开发工作中,它们可谓是大功臣,但是它们只会默默无闻地干活,很少有人关注它们是谁,长什么样。
现在,就让大家拜会一下图1.3所示的集成开发环境中使用的编译器和链接器,如图1.6所示。
其中,画圈的两个就是编译器和链接器,“cl.exe”是编译器,“cl”表示“compiler”中的两个字母,表示编译;“link.exe”就是链接器,“link”就是链接的意思。
图1.6编辑器和链接器
对于如何在集成开发环境中使用这两个工具,在后边讲解如何使用集成开发环境的时候,会详细讲到,这里大家先认识一下这两个工具和输出窗口就可以了!
1.3VisualStudio使用简介
C语言开发的集成开发环境众多,它们之间大同小异,可以根据自己的喜好和不同的平台进行选择。
这里,选择Windows操作系统上较常使用的VisualStudio来介绍一个集成开发环境的简单使用方法。
如果你喜欢其他集成开发环境,可以照猫画虎,和VisualStudio是类似的。
1.3.1VisualStudio版本
VisualStudio的全称为MicrosoftVisualStudio,意思是“微软可视化工作室”,简称为VS。
它包含VB、VC、VF、Delphi、控件、数据库ODBC等开发工具,其中VC就是用来进行C和C++开发的,表示VisualC/C++。
VS是由微软公司开发的,用于开发Windows程序的工具,要追溯它的版本信息,那就久远了。
不过主要被使用的版本有VS6.0、VS2003、VS2005、VS2008、VS2010。
每一个版本中都会包含一个VC开发组件或工具,用于C和C++的开发,我们在学习C语言的时候,使用的就是VC开发工具。
对于众多版本的VS,你可以任选一个进行安装使用,它们之间的差别不是很大。
不过,还是建议尽量选择较新的版本,因为更新的版本对于标准的支持往往比较好,而且功能会更强大。
1.3.2VisualStudio的安装
选定一个VS版本之后,就可以进行安装了!
每个VS版本的安装过程都是一样的,插入安装光盘,待光盘运行以后,就会弹出安装界面。
如果没有弹出安装界面,你可以直接打开光盘文件夹,双击“autorun.exe”或者“setup.exe”文件就会弹出安装界面,如图1.7所示是VS2010的安装界面。
图1.7VS2010安装界面
选择安装MicrosoftVisualStudio2010,就可以进入安装过程了,剩下的安装过程就是一路“下一步”,中间需要输入序列号和选择安装路径,也就是选择安装的地方。
1.3.3新建项目
要使用VisualStudio制作出一个能完成一定功能的软件,首先需要新建一个解决方案,一个解决方案中还可能包含一个或者多个项目。
每个项目是用来组织脚本文件和代码文件并生成一个可执行程序或者库二进制文件的基本单位。
所以,一个解决方案最终会产生一个或者多个可执行程序或者库二进制文件。
使用这些可执行程序和库二进制文件就可以构成实际可以运行的程序了。
好了,这里大家只要知道,要使用VS制作一个实际可以运行的程序,必须有一个解决方案。
这个解决方案包含一个或者多个项目,每个项目最终会产生一个可执行程序或者库二进制文件。
无论是要新建解决方案还是新建项目,都得先进入图1.8所示的界面。
可能不同VS版本的这个界面会有所不同,但是打开方式都是一样的:
找到“MicrosoftVisualStudio2010”启动程序(开始|所有程序|MicrosoftVisualStudio2010|MicrosoftVisualStudio2010),单击“MicrosoftVisualStudio2010”图标启动“VS”开发环境,依次单击图1.3所示左上角的“文件”|“新建”|“项目”命令,就会出现图1.8所示的VS2010“新建项目”对话框。
图1.8VS2010“新建项目”对话框
使用VisualStudio新建解决方案和项目的方式有很多种,下面介绍两种常用的方式。
1.先建解决方案再建项目
在图1.8所示对话框最左边一列“已安装的模板”中选择“其他项目类型”,再选择“VisualStudio解决方案”,窗口就会变成图1.9所示了。
最后填写解决方案“名称”和所放“位置”,就可以新建一个解决方案了。
(1)新建完解决方案以后,就可以往解决方案中添加项目了,添加的方式如图1.10所示。
在VisualStudio的“解决方案资源管理器”子窗口中,单击右键就会弹出图1.10所示的对话框。
单击“添加”|“新建项目”命令,如果你有已经建好的项目,还可以选择“现有项目”。
选择了“新建项目”以后,就会弹出如图1.8所示的“新建项目”对话框,这时就可以新建一个项目了。
图1.9新建解决方案
图1.10添加解决方案
(2)弹出如图1.8所示的“新建项目”对话框之后,在最左边一列“已安装的模板”中选择“VisualC++”,再选择“Win32”,对话框就会变成图1.11所示了。
选择“Win32控制台项目”选项,最后填写项目“名称”和所放“位置”,就可以新建一个名为“test”的Win32控制台项目了。
(3)之后,会弹出一系列的Win32应用程序向导,如图1.12所示。
它会带领我们填完一个新建的项目的所有选项,基本都是直接打钩,然后单击“下一步”按钮,最后单击“完成”按钮。
(4)完成项目新建之后,VisualStudio的“解决方案资源管理器”子窗口会变成如图1.13所示的样子,表示我们已经完成了解决方案和项目的新建工作。
图1.11“新建项目”对话框
图1.12项目新建向导
图1.13完成解决方案和项目新建
2.解决方案和项目一起建
其实,可以一次性完成解决方案和项目新建的工作。
打开VS开发环境,单击“文件”|“新建”|“项目”命令,弹出图1.8所示的“新建项目”对话框时,直接新建项目就可以了。
不过,在图1.14所示的对话框最后填写名称和路径的时候得再加上一个解决方案名称,VS就会自动同时新建解决方案和项目的名称填写,如图1.14所示。
对于初学者,建议使用这种方式进行新建。
剩下的新建项目过程和图1.11、图1.12所示是一样的。
图1.14解决方案和项目一起建
这里说明一下,Win32控制台应用程序运行出来的结果是一个如图1.15所示的窗口。
它可以接受键盘输入的字母、数字和符号,也可以输出程序运行产生的字母、数字和符号。
本书所有的代码都将在“Win32控制台应用程序”项目中运行。
另外,在图1.12所示对话框的“附加选项”中选择空项目,不需要VS给我们创建任何代码文件。
图1.15控制台程序窗口
1.3.4编写代码
新建好项目以后,就可以编写代码了。
在编写代码之前,得先新建一个用来保存代码的源文件,并将其添加到相应的项目中。
一般最简单直接的方式是在对应的项目中单击右键,在弹出的快捷菜单中选择“添加”|“新建项”命令,如图1.16所示。
图1.16往项目中添加源文件
单击“添加”|“新建项”命令以后,会弹出如图1.17所示的“添加新项”对话框。
选择“VisualC++”下的“代码”,然后选择“C++文件”,最后在“名称”栏中填写文件名“test.c”。
C语言源文件必须以“.c”作为后缀。
最后选择“test.c”源文件放置位置。
这里之所以要选择“C++文件”选项,是因为VS对C和C++文件的处理差异不是很大,没必要分别列出,只要在填写文件“名称”时,以“.c”作为文件名后缀就可以了。
图1.17添加新项
选择并填写完添加源文件的所有选项和空格以后,单击“添加”按钮,新建的源文件就被添加到对应的项目了。
VS2010开发环境的“解决方案资源管理器”子窗口和“代码编辑”子窗口就会变成图1.18所示的样子了。
在图1.18中,我们已经在源文件“test.c”中编辑好了一段简单的C语言代码。
图1.18添加完源文件并且编辑代码
1.3.5编译链接
代码编辑好之后,就可以把代码源文件交给编译器进行编译了,编译完之后再交给链接器生成一个可以执行的程序。
在VS的菜单栏中有一个菜单“生成”选项,就是用来让编译器和链接器完成编译链接工作的,如图1.19所示。
图1.19编译链接
我们较常使用的有“生成解决方案”、“生成XX”和“编译”,XX表示项目名称,此处为“test”。
“生成解决方案”就是编译链接之后,生成该解决方案下的所有项目,其所对应的可执行文件或者库二进制文件;“生成test”就是只对test项目进行编译链接,生成可执行程序;“编译”就是只对代码进行编译而不链接。
在这里,我们的解决方案中只有一个项目,所以“生成解决方案”和“生成test”是一样的,就直接生成解决方案吧,快捷键为Ctrl+Alt+F7。
编译链接输出的报告在“输出”子窗口中,如图1.20所示。
此报告显示,所写代码正确无误,成功进行编译链接,生成的可执行程序的名字为“test.exe”,保存在目录“C:
\Users\malei\documents\visualstudio2010\Projects\test\Debug”下。
图1.20编译链接报告
1.3.6运行可执行程序
可执行程序生成好以后,就可以看看程序的运行结果了,这也是我们写代码的最终目的。
VS有专门的菜单可以帮助你直接运行生成的程序,即菜单栏中的“调试”菜单,如图1.21所示。
图1.21“调试”菜单
如果只需要运行一下生成的可执行程序,单击“开始执行(不调试)”菜单项就可以了,刚才生成的“test.exe”可执行程序的运行结果如图1.22所示。
程序只是简单地在控制台窗口中输出了一行英文单词“CProgrammingLanguage!
”。
图1.22运行输出
好,到现在为止,就可以简单地使用VS了。
虽然有很多的功能菜单和工具没有仔细讲解,但是,上面讲的知识足够你把C语言代码变成一个可执行程序了。
要实现更多更复杂的功能,可以等需要的时候,再参阅VS的开发文档。
如果使用其他版本的VS或者其他的集成开发环境,参照本节的内容,找到对应的几个点,在你的集成开发环境上照猫画虎就可以了。
这些点分别是:
(1)如何创建解决方案(有的集成开发环境没有解决方案这个概念,可以略去此步);
(2)如何创建项目(集成开发环境一般都有项目的概念);
(3)如何新建源文件,并将其添加到对应的项目中;
(4)如何编译链接,生成可执行程序;
(5)如何运行可执行程序。
只要找到这5个方面,就可以简单使用一个集成开发环境了,更复杂的功能就参考开发文档吧!
1.4如何学好C语言
对于如何学好C语言,每个人都会有自己的看法和方式,所以并不苛求非得如何如何,只要你觉得能帮助你提高就可以了。
这里,我只将自己的一些看法写下来,只给大家提供一个借鉴。
从我自己的学习经历来说,要学好C语言,只要能够真的做到三点就好,“多看、多写、多想”。
哇!
好空洞啊,还是来解释一下吧!
❑“多看”,看什么呢?
看别人写的代码。
当你没有任何开发经验时,唯一能做的就是看别人是怎么做的,只要能用自己已有的C语言知识解释通别人写的代码是什么意思,就算有长进了。
如果死活看不懂,那么就得继续巩固自己的C语言储备了。
❑“多写”,指的