第1章 初识C语言1207.docx
《第1章 初识C语言1207.docx》由会员分享,可在线阅读,更多相关《第1章 初识C语言1207.docx(32页珍藏版)》请在冰豆网上搜索。
第1章初识C语言1207
第1章初识C语言
学习目标
◆了解C语言的特点
◆熟悉VisualStudio开发环境的搭建
◆掌握HelloWorld程序的编写
◆掌握C语言程序的运行机制
C语言是一种通用的、面向过程的编程语言,它具有高效、灵活、可移植等优点。
在最近二十多年里,它是使用最广泛的编程语言之一,被大量的运用在系统软件与应用软件的开发中。
本章作为整本书的第一章,将针对C语言的发展历史、开发环境搭建、如何编写C语言程序以及C语言的运行机制等内容进行详细地讲解。
C语言概述
1.1.1计算机语言发展史
在揭开C语言的神秘面纱之前,先来认识一下什么是计算机语言。
计算机语言(ComputerLanguage)是人与计算机之间通讯的语言,它主要由一些指令组成,这些指令包括数字、符号和语法等内容,编程人员可以通过这些指令来指挥计算机进行各种工作。
计算机语言有很多种类,根据功能和实现方式的不同大致可分为三大类,即机器语言、汇编语言和高级语言,下面针对这三类语言的特点进行简单介绍。
1、机器语言
计算机不需要翻译就能直接识别的语言被称为机器语言(又被称为二进制代码语言),该语言是由二进制数0或1组成的一串指令,对于编程人员来说,机器语言不便于记忆和识别。
2、汇编语言
人们很早就认识到这样的一个事实,尽管机器语言对计算机来说很好懂也很好用,但是对于编程人员来说记住0和1组成的指令简直就是煎熬。
为了解决这个问题,汇编语言诞生了。
汇编语言用英文字母或符号串来替代机器语言,把不易理解和记忆的机器语言按照对应关系转换成汇编指令。
这样一来,汇编语言就比机器语言更加便于阅读和理解。
编译器可以把写好的汇编语言翻译成机器语言,实现和计算机的沟通。
3、高级语言
由于汇编语言依赖于硬件,使得程序的可移植性极差,而且编程人员在使用新的计算机时还需学习新的汇编指令,大大增加了编程人员的工作量,为此计算机高级语言诞生了。
高级语言不是一门语言,而是一类语言的统称,它比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。
由于高级语言和计算机的架构、指令集无关,因此它具有良好的可移植性。
高级语言应用非常广泛,世界上绝大多数编程人员都在使用高级语言进行程序开发。
常见的高级语言包括C、C++、Java、VB、C#、Python、Ruby等。
本书讲解的C语言就是目前最流行、应用最广泛的高级语言之一,也是计算机高级编程语言的元老。
1.1.2什么是C语言
C语言是一种高级程序设计语言,具有简洁、紧凑、高效等特点。
它既可以用于编写应用软件,也可以用于编写系统软件。
自1973年问世以来,C语言迅速发展并成为最受欢迎的编程语言之一,下面针对C语言的发展史和C语言标准分别进行讲解。
1、C语言的发展史
早期的系统软件设计均采用汇编语言,例如,大家熟知的UNIX操作系统。
尽管汇编语言在可移植性、可维护性等方面远远不及高级语言,但是一般的高级语言有时难以实现汇编语言的某些功能。
那么,能否设计出一种集汇编语言和高级语言优点于一身的语言呢?
于是,C语言就应运而生了。
C语言的发展颇为有趣,它的原型是ALGOL60语言(也称A语言)。
1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。
1967年,剑桥大学的马丁·理查兹(MatinRichards)对CPL语言进行了简化,于是产生了BCPL语言。
1970年,美国贝尔实验室的肯·汤普森(KenThompson)将BCPL进行了修改,并为它起了一个有趣的名字“B语言”,其含义是将CPL语言煮干,提炼出它的精华,并且他用B语言写了第一个UNIX操作系统。
1973年,美国贝尔实验室的丹尼斯·里奇(DennisM.Ritchie)在B语言的基础上设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,即C语言。
1978年,布赖恩•凯尼汉(BrianW.Kernighan)和丹尼斯·里奇(DennisM.Ritchie)出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
2、C语言标准
随着微型计算机的日益普及,出现了许多C语言版本。
由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。
为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,即C语言标准。
在1989年美国国家标准学会(ANSI)通过的C语言标准ANSIX3.159-1989被称为C89。
之后在1990年,国际标准化组织ISO也接受了同样的标准ISO9899-1990,该标准被称为C90。
这两个标准只有细微的差别,因此,通常来讲C89和C90指的是同一个版本。
后来随着时代的发展,1999年ANSI又通过了C99标准。
C99标准相对C89做了很多修改,例如变量声明可以不放在函数开头,支持变长数组等。
但由于很多编译器仍然没有对C99提供完整的支持,因此本书将按照C89标准来进行讲解,在适当时会补充C99标准的规定和用法。
1.1.3C语言的特点
C语言是一种通用的的、面向过程的程序语言,它的诸多特点使它应用面很广,下面我们简单学习一下C语言的特点。
1、语言简洁,使用方便灵活
C语言是现有程序设计语言中规模最小的语言之一,它仅有32个关键字,9种控制语句,压缩了一切不必要的成份。
其32个关键字与9种控制语句在后续章节中会陆续学习。
2、结构化程序设计
C语言是面向过程的语言,它以函数作为程序设计的基本单位。
具有自定义函数的功能。
因C语言可以很容易地进行结构化程序设计。
3、能进行硬件操作
C语言既具有高级语言的功能,又具有低级语言的许多功能,C语言的这种双重性使它既是成功的系统描述语言,又是通用的程序设计语言。
4、执行速度快
众所周知,汇编语言程序目标代码是效率最高的,而C语言仅的目标代码效率仅比汇编语言低10%-20%。
尽管C语言具有很多的优点,但和其他任何一种程序设计语言一样也有其自身的缺点,如编写代码实现周期长,可移植性较差,过于自由,经验不足易出错,对平台库依赖较多。
但总的来说,C语言的优点远远超过了它的缺点。
1.1.4C语言的发展趋势
从20世纪70年代起,C语言通过UNIX操作系统迅速发展起来,逐渐占据了大、中、小以及微型机,成为风靡世界的计算机语言。
大多数软件开发商都优先选择C语言来开发系统软件、应用程序、编译器和其他产品。
这样的现象一直保持了20年,直到20世纪90年代,一种代表着先进思想的语言问世,也就是C语言的超集C++,由于C++解决了C语言不能解决的诸多难题,所以许多开发商开始使用C++来开发一些复杂的、规模较大的项目,因此,C语言进入一个冷落时期。
这个冷落时期并没有持续太长时间,随着嵌入式产品的增多,C语言简洁高效的特点又被重视起来,其强大的功能被广泛应用于各领域:
(1)C语言可以写网站后台程序,诸如XX腾讯后台。
(2)C语言可以写出绚丽的GUI界面,诸如苹果界面。
(3)C语言可以可以专门针对某个主题写出功能强大的程序库,然后供其他程序方便使用,从而让其他程序节省开发时间。
(4)C语言可以写出大型游戏的引擎。
(5)C语言可以写出另一个语言来。
(6)C语言可以写操作系统和驱动程序,并且只能用C语言编写,Linux操作系统的全部源代码都可以从网上得到,要深入了解操作系统的运行秘密,懂C语言,就能看懂。
(7)任何设备只要配置了微处理器,就都支持C语言。
从微波炉到手机,都是由C语言技术来推动的。
随着信息化、智能化、网络化的发展,嵌入式系统技术的发展,C语言的地位也会越来越高。
C语言还将在云计算、物联网、移动互联网、智能家居、虚拟世界等未来信息技术中发挥重要作用。
因此,学习好C语言是很有必要的,掌握好C语言的编程知识,也是求职拿高薪的敲门砖。
而且掌握了C语言后,很容易学习其他面向过程的语言,学习C++,Java,ObjectiveC,PHP将事半功倍,因为万变不离其宗,只是语法上有些许更改,而思想却没有更改。
开发环境搭建
在使用C语言开发程序之前,首先要在系统中搭建开发环境。
现在主流开发工具有很多种,接下来本节将针对常见的开发工具进行简单介绍,并重点讲解如何搭建C语言开发环境。
1.1.5主流开发工具介绍
C语言程序有多种开发工具,选择合适的开发工具,可以让读者更加快速的进行程序编写,接下来将针对几种主流的开发工具进行介绍,具体如下:
1、VisualStudio工具
VisualStudio(简称VS)是由微软公司发布的集成开发环境。
它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。
VisualStudio支持C/C++、C#、F#、VB等多种程序语言的开发和测试,功能十分强大。
常用的版本有VisualStudio2010、VisualStudio2012等,目前最新版本为VisualStudio2013。
2、Code:
:
Block工具
Code:
:
Block是一个免费的跨平台IDE,它支持C、C++和Fortan程序的开发。
Code:
:
Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,这使得Code:
:
Block具有很强的灵活性,方便用户使用。
Code:
:
Block本身并不包含编译器和调试器,它仅仅提供了一些基本的工具,用来帮助编程人员从命令行中解放出来,使编程人员享受更友好的代码编辑界面。
不过,在后期Code:
:
Block的发行版本中已经以插件的形式提供了编译和调试的功能。
3、Eclipse工具
Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发,目前由开源社区的Eclipse基金会负责Eclipse的管理和维护。
一开始Eclipse被设计为专门用于Java语言开发的IDE,现在Eclipse已经可以用来开发C、C++、Python和PHP等众多语言。
Eclipse本身是一个轻量级的IDE,在此之上,用户可以根据需要安装多种不同的插件来扩展Eclipse的功能。
除了利用插件支持其他语言的开发之外,Eclipse还可以利用插件实现项目的版本控制等功能。
4、Vim工具
和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。
和Code:
:
Block以及Eclipse类似,Vim也支持通过插件扩展自己的功能。
Vim不仅适用于编写程序,而且还适用于几乎所有需要文本编辑的场合,Vim还因为其强大的插件功能,以及高效方便的编辑特性而被称为是程序员的编辑器。
由于Vim配置多种插件可以实现几乎和IDE同样的功能,因此,Vim有时也被编程人员直接当作IDE来使用。
1.1.6VisualStudio安装
开发C语言程序最常用的工具是VisualStudio,目前最新版本为VisualStudio2013,该版本的开发工具有功能全面、界面友好等特点。
VisualStudio2013开发工具还分为多个版本,大家可以针对不同的需求选择不同的版本。
本书选择的开发工具是VisualStudioExpress2013forWindowsDesktop,它是VisualStudio产品的轻量版本,具备易学、易用、易上手等特点,更加适合读者使用。
接下来通过具体的步骤来演示如何在Windows7系统上安装VisualStudioExpress2013forWindowsDesktop开发工具。
1、开始安装
从微软的官网下载VS2013_RTM_DskExp_CHS.iso镜像文件,在本地可以直接解压或者通过虚拟光驱来进行安装,解压后以管理员身份运行安装程序,此时显示VisualStudio界面,如图1-1所示。
图1-1VisualStudio
图1-1所示的开始安装界面会暂停片刻,然后便会进入路径选择界面,如图1-2所示。
图1-2路径选择界面
从图1-2可以看出,程序的安装路径默认为C:
\ProgramFiles(x86)\MicrosoftVisualStudio12.0,单击安装路径后的浏览按钮,可以把VisualStudio开发工具安装到指定的路径,本书使用默认路径进行安装。
选中【我同意许可条款和隐私策略】选项,取消对【加入VisualStudio体验改善计划及帮助改善VisualStudio的质量可靠性和性能(可选)】选项的勾选,如图1-3所示。
图1-3路径选择界面
点击图1-3路径选择界面中的“安装(N)”,此时便会出现安装界面,如图1-4所示。
图1-4安装界面
图1-4所示的安装界面正在加载VisualStudio安装所需的组件,这个过程会持续较长的时间,需要耐心等待。
VisualStudio安装成功后,会看到安装成功界面,如图1-5所示。
图1-5安装成功界面
至此,VisualStudio便安装完成了。
2、启动VisualStudio
点击图1-5中的“启动(L)”,启动VisualStudio开发工具,界面如图1-6所示。
图1-6启动起始界面
程序启动后会在图1-6所示的界面停留片刻,便会自动进入欢迎界面,如图1-7所示。
图1-7欢迎界面
在图1-7的欢迎界面中,可以看到【登录(I)】按钮,如果注册了微软账号的用户可以选择这种方式进行登录。
为了方便起见,在此选择“以后再说”选项,进入准备阶段,如图1-8所示。
图1-8准备阶段
由于是第一次启动VisualStudio开发工具,因此需要一段时间进行准备。
准备完成后会显示起始页面,如图1-9所示。
图1-9起始页
至此,如果看到了图1-9所示的起始界面,便说明VisualStudio启动成功了。
1.1.7VisualStudio主界面
使用VisualStudio工具进行程序开发,主要是在VisualStudio的主界面中进行的。
主界面由标题栏、菜单栏、工具栏、代码编辑窗口、解决方案资源管理器、输出窗口、属性窗口等组成,具体如图1-10所示。
图1-10主界面
在程序开发时,主要会用到主界面中的4个部分,每个部分功能都不相同,具体说明如下:
●代码编辑窗口:
用于显示和编写代码。
●解决方案资源管理器:
用来显示项目文件的组成结构,如Program01项目中包含头文件、外部依赖项、源文件(HelloWorld.c)、资源文件。
●输出窗口:
用于显示项目中的一些警告和错误。
●属性窗口:
用于显示当前操作文件的相关信息,如项目文件名称、文件类型等。
HelloWorld程序的编写
通过上一小节的学习,读者对VisualStudio开发工具有了一个基本的认识。
为了快速熟悉工具的使用以及了解C语言程序的编写,本节将通过一个向控制台输出“Hello,world”的程序为读者演示如何在VisualStudio工具中开发一个C语言应用程序,具体实现步骤如下:
1、新建项目
启动VisualStudio开发工具,在菜单栏中选择【文件】【新建项目】,如图1-11所示。
图1-11创建项目
点击图1-11中所示的【新建项目】菜单,此时会弹出新建项目窗口,在新建项目窗口中可以选择创建的项目类型,设置项目名称、位置、解决方案名称等,如图1-12所示。
图1-12新建项目窗口
从图1-12中可以看出,项目窗口大致可分为3个部分,其中模板区域可以选择要开发项目的模板,项目区域可以选择要创建项目的类型。
在项目区域的下方,可以设置项目名称、位置(项目的保存位置)以及解决方案名称,解决方案名称默认与项目名相同。
模板区域包含了项目开发中的多个模板,如VisualBasic、VisualC#、VisualC++等模板。
由于本书是针对C语言进行讲解的,因此只会用到C++中的模板,接下来将针对C++模板下的项目类型进行介绍,具体如下:
●Win32控制台应用程序:
用于创建Win32控制台应用程序的项目。
●Win32项目:
用于创建Win32应用程序、控制台应用程序、DLL或其他静态库项目。
●空项目:
用于创建本地应用程序的空项目。
●生成文件项目:
用于使用外部生成系统的项目。
在此,选择C++模板中的Win32控制台应用程序(运行结果会显示在命令行窗口中),然后将项目名称设置为Program01,项目的位置为“D:
\itcast\”,并将解决方案的名称设置为chapter01,这样创建的程序文件就会生成在“D:
\itcast\chapter01”目录中。
最后点击【确定】按钮,弹出一个Win32应用程序向导窗口,如图1-13所示。
图1-13Win32应用程序向导窗口
在图1-13所示的窗口中,系统默认选择控制台应用程序,然后点击【下一步】按钮,此时出现Win32应用程序向导的第二个窗口,如图1-14所示。
图1-14Win32应用程序向导窗口
在图1-14中,勾选【空项目】选项,然后点击【完成】按钮,至此便完成了Program01项目的创建。
2、添加源文件
项目创建完成后,就可以在Program01项目中添加C语言源文件。
在Program01项目中的源文件夹上点击鼠标右键,在弹出的菜单中依次选择【添加】【新建项】,如图1-15所示。
图1-15添加新建项
点击图1-15中的新建项,随后在弹出的添加新项窗口里选择【C++文件(.cpp)】,并在名称输入框中填写“HelloWorld.c”,如图1-16所示。
图1-16添加源文件
3、编写代码
点击图1-16中的【添加】按钮,HelloWorld.c源文件便创建成功,此时,在解决方案资源管理器的源文件夹中便可以看到HelloWorld.c文件,如图1-17所示。
图1-17HelloWorld.c文件
为了让读者对C语言编程有一个简单了解,接下来在图1-17的编辑区中编写HelloWorld.c程序,具体代码如例1-1所示。
例1-1
1#include
2intmain()
3{
4printf("Hello,world\n");
5return0;
6}
例1-1就是一个完整的C语言程序,接下来针对该程序中的语法细节进行详细地讲解,具体如下:
●第1行代码的作用是进行相关的预处理操作。
其中字符“#”是预处理标志,用来对文本进行预处理操作,include是预处理指令,它后面跟着一对尖括号,表示头文件在尖括号内读入。
stdio.h就是标准输入输出头文件,由于在第4行用到了printf()输出函数,所以需加此头文件。
●第2行代码声明了一个main()函数,该函数是程序的入口,每一个C程序必须有且仅有一个main函数,程序总是从main()函数开始执行。
main()函数前面的int表示该函数的返回值类型是整型。
代码第3~6行“{}”中的内容是函数体,程序的相关操作都要写在函数体中。
●第4行代码调用了一个用于格式化输出的函数printf(),该函数用于输出一行信息,可以简单理解为向控制台输出文字或符号等。
printf()括号中的内容称为函数的参数,括号内可以看到输出的字符串“Hello,world\n”,其中“\n”表示换行操作,它不会输出到控制台。
●第5行代码中return语句的作用是将函数的执行结果返回,后面紧跟着函数的返回值,返回值一般用0或-1表示,0表示正常,-1表示异常。
值得一提的是,在C语言程序中,以分号(;)作为结束标记的代码都可称为语句,如例1-1中的第4行、第5行代码都是语句,被“{}”括起来的语句被称为语句块。
4、运行程序
HelloWorld程序编写完成并保存后,就可以对HelloWorld程序进行编译和运行操作。
选择【调试】【开始执行(不调试)】选项,或者直接使用快捷键Ctrl+F5来运行程序,如图1-18所示。
图1-18运行程序
程序运行后,会弹出命令行窗口并在该窗口中输出运行结果,如图1-19所示。
图1-19运行结果
至此,便完成了HelloWorld程序的创建、编写以及运行过程。
读者在此只需有个大致印象即可,后面将会继续讲解如何使用VisualStudio开发工具编写C语言程序。
脚下留心:
让运行界面暂停
在VS中直接点击运行按钮或使用F5键是调试状态下运行程序,运行结束后窗口会消失。
此时我们若想看到程序的运行结果,就需要使用快捷键Ctrl+F5,这个快捷键在vs中是用来不调试运行程序,可以让运行界面暂停;或者在程序的头部添加#include,在main()函数尾部加上system(“pause”)函数调用,该函数也起到使程序运行到这句话时暂停的功能。
多学一招:
VS命令行运行HelloWorld.c
读者在运行C语言程序时,直接点击运行按钮就可以运行了。
其实还可以调用VS命令行手动编绎运行,可以体会一下C语言程序的运行过程。
在调用命令行之前,安装codeblocks-13.12mingw-setup-TDM-GCC-481.exe(读者可以到博学谷平台下载此安装包)。
然后在【开始】菜单中点击“VisualStudio2013”文件夹,如图1-20所示。
图1-20VisualStudio2013文件夹
【VisualStudio2013】文件夹下有【VisualStudioTools】子文件夹,点击此文件夹,弹出如图1-21所示的窗口。
图1-21点击VisualStudioTools文件夹窗口
此窗口下有【VS2013开发人员命令提示】,点击此文件,会弹出如所1-22所示的命令行窗口。
图1-22VS命令行窗口
图1-22中显示的“F:
\2013>”是VS的安装目录,VS安装的目录不同,显示的路径也不同。
打开此命令窗口后,读者创建一个HelloWorld.txt文件,编写例1-1中HelloWorld程序。
本书以在桌面上创建为例,在后续章节中,如未有提示均指在桌面创建文件。
将HelloWorld.txt后缀名改为.c,即HelloWorld.c。
文件创建好后,在命令行中进入到文件所在路径,如图1-23所示。
图1-23进入到HelloWorld.c所在路径
进入到HelloWorld.c所在的路径后,执行命令“clHelloWorld.c”,然后回车,如图1-24所示。
图1-24执行clHelloWorld.c命令后
执行完这一步之后,会在桌面两上文件HelloWorld.exe和HelloWorld.obj文件。
HelloWorld.obj是编绎过程的中间产物,HelloWorld.exe是生成的最终执行文件。
此时在命令运行HelloWorld.exe并回车,结果如图1-25所示。
图1-25执行HelloWorld.exe
VS命令行能更深切的体会到C语言程序的编绎过程,其实在VS中点击运行按钮时,VS也是调用的命令行来执行。
除此之外,C语言还可以在MACios、QT、unix、Android等环境下执行。
有兴趣的读者可以尝试一下。
C语言代码风格
开发软件往往不是一朝一夕的事情,更多的情况下,一个软件的开发周期需要很长时间,并且通常由多人合作完成。
因此,一定要保持良好的编码风格,才能最大化地提高程序开发效率。
很