![C语言从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/646/26793646/b_26793646.jpg)
第1章 步入C编程世界——认识C语言
◎本章教学微视频:9个 9分钟
学习指引
通过本章的学习,读者能够掌握C语言的基本概念、C语言程序的开发过程和编写第一个C程序,同时理解C语言代码结构的编写规范。
重点导读
● 了解C语言程序。
● 熟悉C程序的开发环境。
● 熟悉C程序的编译和运行流程。
● 掌握编写第一个C程序的方法。
● 理解C代码结构编写规范。
1.1 了解C语言
C语言是一门非常流行的计算机语言,它的问世已有近半个世纪,但是这门语言依旧散发着青昡的活力。要想学好C语言,首先需要来了解C语言的特点。
1.1.1 C语言的特点
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P21_5400.jpg?sign=1739230596-zg7JrNtafmVUb2Yya4lHyyCK9aV3hYl4-0-4c7a48c2e0550ad17fd5952c523329ae)
C语言是由Dennis Ritchie创造并首先在配备UNIX操作系统的DEC PDP-11计算机上实现的。C语言是国际上广泛流行的很有发展前途的计算机高级语言,它适合作为系统描述语言,既可用来写系统软件,也可用来写应用软件。
C语言是一门强大的专业化编程语言,其主要特点如下。
1. 语言简洁紧凑,使用方便灵活
C语言有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。学过Pascal或FORTRAN的读者都知道,C语言简练,源程序短。
2. 数据结构丰富
C语言的数据类型有整型、浮点型、双精度浮点型、字符型、数组类型、指针类型、结构体类型和共用体类型等,足以用来实现各种复杂的数据结构(如队列、链表、树、栈等)的运算。
3. 理想的结构化语言
C语言具有丰富的结构化控制语句(如条件语句、选择语句和循环语句等)。C语言使用函数作为程序的模块单位,便于实现程序的模块化。
4. 运行速度快
C程序往往很紧凑而且运行速度快,可以与汇编语言相媲美,许多硬件的驱动程序都是使用C语言编写的。
5. 可移植性强
C语言是可移植的语言,在一个系统上编写的C程序,经过很小的改动或者不改动就可以在其他系统上运行。
1.1.2 为什么要学习C语言
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P22_5415.jpg?sign=1739230596-atWrTj79EKZDwqCXf5kqNxDKCEHBgwyy-0-20aa392e5657b106a0416d8193fcf756)
为什么要学习C语言?为什么不直接学习其他高级语言?除了1.1.1节中的介绍外,还有如下原因。
(1)C语言相比其他高级语言,如C++、Java、C#等,它可以让人们更好地了解计算机是如何工作的,如数据在内存中是如何存储的,如何直接访问内存中的数据,等等。
(2)可以毫不夸张地说,C语言是其他仸何高级语言的基础。学好C语言,可以更容易地掌握其他语言。语言都是相通的,C语言更专注于语言的实质,而不需要分散更多的精力在集成开发环境的使用和抽象的数据概念上。
(3)C语言执行效率高、速度快。
1.2 准备C语言程序编程
在正式开始学习C语言之前,读者需要选择开发环境。C语言集成开发环境比较多,没有必要对每一种开发环境都熟练地掌握,只需要精通一种开发环境就可以了。下面分别来认识最常用的两种开发环境:Visual C++6.0和Turbo C 2.0。
1.2.1 Visual C++6.0开发环境
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P22_5416.jpg?sign=1739230596-NlcYrAWXNB5d6sK50LTF2lGccXiF9tfs-0-76549866f55161d420c768f26ebf9612)
本节主要介绍Visual C++6.0开发环境的安装过程。
第1步:启动安装
打开Visual C++6.0安装目录,双击文件AUTORUN.EXE,启动安装,如图1-1所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P23_5422.jpg?sign=1739230596-LTiGTUtaibuUxhPtjqjOboDMLOeo2qxZ-0-449feb892e8e3b617ef5c98bfa2d074c)
图1-1 Visual C++6.0安装目录
第2步:选择安装版本
在第一个界面上单击“中文版”,启动中文版Visual C++6.0的安装过程,如图1-2所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P23_5426.jpg?sign=1739230596-xEPtf8QOB8YIUsVADQWhgFthILQTZCpe-0-fb36ccc26ea28eaf2f0fb45e5b299e96)
图1-2 选择安装版本
第3步:程序兼容性设置
在单击“中文版”之后,Windows 7操作系统将弹出“程序兼容性助手”对话框,单击“运行程序”按钮,如图1-3所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P24_5437.jpg?sign=1739230596-kHLe3lSGeuJuX8FqxMOhL2EAWxTEI4l6-0-526a4d0ac947b31a97c2aa5d78a61067)
图1-3 “程序兼容性助手”对话框
第4步:启动安装向导
单击“运行程序”按钮后,将正式开始安装Visual C++6.0,系统启动安装向导,如图1-4所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P24_5441.jpg?sign=1739230596-n3X8THuFUpMzXYvzM9YFmGGZCcFHiM2B-0-05f5fbc3ce437f34359079d1cd2879c6)
图1-4 安装向导
第5步:设置最终用户许可协议
要想安装Visual C++6.0,首先必须接受该协议。在第4步的图中单击“下一步”按钮后,将弹出“最终用户许可协议”对话框,如图1-5所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P25_5448.jpg?sign=1739230596-7cSya42Xb8inRf8ItHDsd4DMRtag4K8w-0-5fe3b3d9ccfa39ad4d10cb515be6d764)
图1-5 “最终用户许可协议”对话框
第6步:产品号和用户ID设置
在“最终用户许可协议”对话框中选择“接受协议”单选按钮后,再单击“下一步”按钮,即可弹出“产品号和用户ID”对话框,如图1-6所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P25_5452.jpg?sign=1739230596-0Re4Rgork3nVRa7G3jAbMXQqftb8HhSh-0-7867f529103213c425b239fcd339a12e)
图1-6 “产品号和用户ID”对话框
第7步:服务器安装程序选项
在第6步中正确输入了ID号、姓名以及公司名称后,单击“下一步”按钮,即可弹出服务器安装程序选项对话框,选中“安装Visual C++6.0中文企业版”单选按钮,如图1-7所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P26_5463.jpg?sign=1739230596-69tuhbSbkticfBXpNo3UYtPQERImPv18-0-52eb1de85d65f91c5940d7aaf0642fad)
图1-7 服务器安装程序选项
第8步:选择公用安装文件夹
在第7步的基础上单击“下一步”按钮,即可弹出“选择公用安装文件夹”对话框,一般该文件夹采用默认即可,如果需要更改,只需要单击“浏览”按钮,然后选择需要的文件夹即可,如图1-8所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P26_5467.jpg?sign=1739230596-IUpjLXp6vPzJ2cVUf6NWDD5bxDBNK1vQ-0-69f2923ed52a062406ea3938bf188c5d)
图1-8 选择公用安装文件夹
第9步:开始安装
在完成了以上8步设置后,即可正式开始安装Visual C++6.0,单击“继续”按钮,在弹出的对话框中单击“确定”按钮,如图1-9所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P27_5475.jpg?sign=1739230596-cdrHLjEzRJUuqCSi026BM6yRTa0jaZHp-0-91e36c88e9c0dde461f6b2439c717bcd)
图1-9 开始安装
第10步:选择安装路径和安装类型
在第9步中单击“确定”按钮后,将弹出选择安装路径和安装类型界面,如图1-10所示。如果需要修改安装路径,可以单击“更改文件夹”按钮进行修改。修改完成后再选择安装类型,新手最好选择典型安装(Typical),熟练之后也可以根据需要选择自定义安装(Custom)。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P27_5479.jpg?sign=1739230596-5mLHdDGu9d0966QMMH5FrZnbnJRNiZvi-0-1e8a45c0bb7ea54f106add7a50ac5d96)
图1-10 Visual C++6.0安装路径和安装类型界面
第11步:设置环境变量
在弹出的对话框中单击“是”按钮更新数据库,如图1-11所示。之后系统将开始安装Visual C++6.0,如图1-12所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P28_5490.jpg?sign=1739230596-4YTjWmeu4f4y3s99ucBdaEclRK9NCLvu-0-59255364af42f85ef7c9288cc6795ee8)
图1-11 更新数据库
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P28_5493.jpg?sign=1739230596-xaZ87q8FXSAFnuCGBdCsLZ1giViwOovF-0-5a0b0751c41fb3173134b53f66334891)
图1-12 安装Visual C++6.0
第12步:完成安装
当出现如图1-13所示的界面时,就完成了Visual C++6.0的安装过程,单击“确定”按钮即可。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P28_5497.jpg?sign=1739230596-dntrPTx0xMvXubJttcSvQ321lsQxrs13-0-c8342e40064097d14ac14d37acfd708c)
图1-13 完成安装
1.2.2 Turbo C 2.0开发环境
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P29_5513.jpg?sign=1739230596-weA4FZVWecbJcNQG2dP2J1U8B1KHdna5-0-c4566b4805ac9bb8a43c0aca14a1df71)
Turbo C 2.0开发环境是另外一个非常流行的开发环境,它的界面非常简洁,软件很小,压缩后不到1MB。
1. 安装
Turbo C 2.0开发环境是绿色版,不需要安装,直接解压缩后即可使用。
2. 属性设置
在解压缩后的主目录中,找到可执行文件TC.EXE,右击,在弹出的快捷菜单中选择“属性”,在弹出的对话框中选择“兼容性”选项卡,勾选“以兼容模式运行这个程序”复选框和“以管理员身仹运行此程序”复选框,如图1-14所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P29_5506.jpg?sign=1739230596-eyLCrYQRcqNrT7epELrHhzdOrVlFNHBB-0-62c3e61f7b34f122e757c46c495f78a1)
图1-14 属性设置
3. 运行
在Turbo C 2.0的主目录中,双击文件TC.EXE,即可运行该开发环境,Turbo C 2.0的主界面如图1-15所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P29_5510.jpg?sign=1739230596-umCZnQ483E1U4yqLEZ1x5oDYjj35HT6i-0-3b939201cd3dae87c8e176bf0a948ff1)
图1-15 Turbo C 2.0的主界面
4. Turbo C 2.0的配置文件
配置文件是包含Turbo C 2.0有关信息的文件,其中存有编译、连接的选择和路径等信息。可以用下述方法建立Turbo C 2.0的配置文件。
(1)建立用户自命名的配置文件:可以从Options菜单中选择Options/Save options命令,将当前集成开发环境的所有配置存入一个由用户命名的配置文件中。下次启动Turbo C 2.0时只要在DOS下输入:
tc/c<用户命名的配置文件名>
就会按这个配置文件中的内容作为Turbo C 2.0的选择。
(2)若设置Options/Environment/Config auto save为on,则退出集成开发环境时,当前的设置会自动存放到Turbo C 2.0配置文件TCCONFIG.TC中。Turbo C 2.0在启动时会自动寻找这个配置文件。
(3)用TCINST设置Turbo C 2.0的有关配置,并将结果存入TC.EXE中。Turbo C 2.0在启动时,若没有找到配置文件,则取TC.EXE中的默认值。
1.3 C程序的编写和运行流程
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P30_5626.jpg?sign=1739230596-fq59Yh3n4SClQQ8OjFdCpENyezAs6BUV-0-552c3b7c76a4d23ed744d7dc4eae7fe7)
要把汇编程序转换成可执行文件,需要通过汇编器实现。那么对于用C语言写的代码,如何把它转换为可执行文件呢?
要转换C语言为可执行文件,需要借助的工具是编译器,转换的过程称为编译。经过编译,生成目标程序,目标文件是机器代码,是不能够直接执行的,它需要有其他文件或者其他函数库辅助才能生成最终的可执行文件,这个过程称为连接,使用的工具称为连接器。
C程序的编写和运行流程如图1-16所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P30_91809.jpg?sign=1739230596-bppi0PZYWRmogHeLH4zCPgfFyggDJAUB-0-ad3bca8451c05c0ae3bafb78e7e13f61)
图1-16 C程序的编写和运行流程
我们把编写的代码称为源文件,或者源代码,输入修改源文件的过程称为编辑,在这个过程中还要对源代码进行布局排版,使之美观有层次,并辅之一些说明文字,帮助我们理解代码的含义,这些文字称为注释,它们仅起到说明的作用,不是代码,不会被执行;经过编辑的源代码,保存之后生成扩展名为c的文件,这些源文件并不能够直接运行,而需要经过编译,把源文件转换为以obj为扩展名的目标文件;此时目标文件再经过一个连接的环节,最终生成以exe为扩展名的可执行文件,我们能够运行的就是可执行文件。
1.4 编写第一个C程序——Hello,C
本节介绍使用Visual C++6.0开发C程序的过程。本书的所有例题都是在Visual C++6.0中开发的。
1.4.1 创建空工程
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P31_5648.jpg?sign=1739230596-PhTWKMSYVXDDuGDwM8HnLPpYX6lJIkNN-0-cab21f6ec57d4c18a722c5a10d1c0b56)
(1)双击桌面上的Visual C++6.0程序的图标,即可打开该程序,如图1-17所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P31_5638.jpg?sign=1739230596-4ofwDYHAK65CFJqJnUtC7TmxSHzdpAfx-0-12fcb503a4bdf308755490f40188375d)
图1-17 Visual C++6.0主界面
(2)在Visual C++6.0中,选择File→New命令,在弹出的对话框中选择Projects选项卡,在左侧列表框中选择Win32 Console Application,在Project name文本框中输入工程名hello,单击Location文本框右侧的按钮,选择工程要存放的文件夹,如图1-18所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P31_5645.jpg?sign=1739230596-UZed739CsLhG9CWL6qIsnO7MXR6x8cTG-0-03d62b8a69fd3631a1f3f8d337928817)
图1-18 创建工程
(3)单击OK按钮,选中An empty project单选按钮,单击Finish按钮,显示工程信息,如图1-19所示。单击OK按钮,即可完成空工程的创建,如图1-20所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P32_5657.jpg?sign=1739230596-jJ4khuINjVv9VB1EaaU7FVsZD4i4jXBr-0-e9321f0350e33c04ac018e2c2ec751de)
图1-19 选中An empty project单选按钮
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P32_5660.jpg?sign=1739230596-8u5qgjzBuyO4Xvax9C3b2bREYr3vhWUu-0-76fb74470c4d564c3b2271c47391ec0a)
图1-20 完成空工程的创建
1.4.2 输入C语言源代码
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P33_5725.jpg?sign=1739230596-AjNTS1MeuJyqg621cVsLuyTeBFKMyetV-0-fa00501d1818acfcba3bbd2cecf243a9)
(1)选择File→New命令,在弹出的对话框中选择Files选项卡,在左侧列表框中选择C++Source File,新建一个程序文档,在File文本框中输入hello.c,单击Location文本框右侧的按钮,可浏览到程序存放的文件夹(这个文件夹要和工程文件夹保持一致),如图1-21所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P33_5672.jpg?sign=1739230596-ZtJJas7JW9eM6F4PxdMFW12pidvTNF69-0-eb0c68d874869fd66a247760433d19c1)
图1-21 创建文件
(2)单击OK按钮,在编辑窗口输入以下代码。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P33_91810.jpg?sign=1739230596-LXHrVRQ4PvEabG9ABIIuCS5hDzDZvnCY-0-839dfdf3c91363566cb7b3c541c1adbf)
(3)代码输入完成后,单击“保存”按钮,或者直接按下保存的快捷键Ctrl+S,即可保存已经输入完成的代码,程序员更应该养成随时保存代码的好习惯。
1.4.3 运行C程序
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P33_5726.jpg?sign=1739230596-extNa8vAQWS4rZTxvjpXdHm8lmgZPKPc-0-e988442f271b6981ff480e0918066853)
(1)单击工具栏中的Compile按钮,或选择Build→Compile Hello.c命令,程序开始编译,并在输出窗口显示编译信息,如图1-22所示。
(2)单击工具栏中的Build按钮,或选择Build→Build Hello.exe命令,开始连接程序,并在输出窗口显示连接信息,如图1-23所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P34_5733.jpg?sign=1739230596-tlTzJo5rcm6d5bnL9VjH3VC6LbdCJqfN-0-9552e830a154da6c081e916adeb62a37)
图1-22 编译程序
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P34_5736.jpg?sign=1739230596-yVDR7J2ccYMtfpJhyDeZjR48rIl6kz5X-0-7725a9b0c86ca3437991bb5688f8d37f)
图1-23 连接程序
(3)单击工具栏中的Execute Programe按钮,或选择Build→Execute Hello.exe命令,即可在命令行中输出程序的结果,如图1-24所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P34_5743.jpg?sign=1739230596-tKTHTyEAtA31EmLAlmHJsb1QjZ00ZPaY-0-64bde0d92d52e2bf88f7ce338f22e6f7)
图1-24 运行程序
注意:可以省略第1步创建空工程的步骤,直接从第2步开始。但是在程序编译时,会要求确认是否为C程序创建默认的工作空间,单击“是”按钮即可,如图1-25所示。
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P34_5747.jpg?sign=1739230596-ZxyoyMOxVjEGf06oblnNZKKLhjntOBRN-0-338460b09453239a31f860343b1576c5)
图1-25 确认对话框
1.5 C代码结构编写规范
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P34_5752.jpg?sign=1739230596-q5MaDFgiNYWcSORCWpahPwuUW2cvwqJW-0-3c57f4f6b7b34313c10255b66f33b48e)
从书写代码清晰,便于阅读、理解、维护的角度出发,在书写程序时应遵循以下觃则。
(1)一个说明或一个语句占一行。我们把空栺符、制表符、换行符等统称为空白符。除了字符串、函数名和关键字,C忽略所有的空白符,在其他地方出现时,只起间隑作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不产生影响,但在程序中适当的地方使用空白符,可以增加程序的清晰性和可读性。
例如下面的代码:
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P35_91811.jpg?sign=1739230596-TUq5eWc0swIxr8xTSTL5rrzWRRlxSpAc-0-c7736722e12084d1fe340dcbcb5f0710)
(2)用“{”和“}”括起来的部分,通常表示程序某一层次的结构。“{”和“}”一般与该结构语句的第一个字母对齐,并单独占一行。
例如下面的代码:
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P35_91812.jpg?sign=1739230596-431UsyF1gBI9Fd7gTthpgDoUvsvyYrNU-0-6c35cde019fd3d028055249dc1c75939)
(3)各层次采用缩进风栺。一般来说缩进指的是存在两个空栺或者一个制表符的空白位置。
例如下面的代码:
![](https://epubservercos.yuewen.com/DE14A6/15253386604113106/epubprivate/OEBPS/Images/Figure-P35_91813.jpg?sign=1739230596-MGRSiINuEIxr2VCr589iqZTmaMFZhL3n-0-205f0756180226d80dffd1edaaec71d2)
(4)在程序中书写注释,用于说明程序做了什么,同样可以增加程序的清晰性和可读性。
以上4点觃则,在编程时应力求遵循,从而养成良好的编程习惯。
1.6 就业面试技巧与解析
本章主要讱述C语言的一些基础知识,是对C语言整体特点的宏观描述,在面试的过程中经常会涉及。
1.6.1 面试技巧与解析(一)
在面试的过程中,本章很多知识点都是面试官经常提问的对象。如C语言的特点、C语言程序的组成、C语言和其他主流语言的异同点等,主要考查求职者对C语言的整体把握能力,这就要求读者在学习本章的过程中,要重点掌握上述知识点,如果有条件,可以模拟求职过程,增大面试通过率。
1.6.2 面试技巧与解析(二)
面试官:简述C语言的特点。
应聘者:C语言简洁、紧凑,使用方便、灵活;数据结构类型丰富;具有结构化的控制语句;语法陎制不太严栺,程序设计自由度大;生成目标代码质量高,程序执行效率高;与汇编语言相比,用C语言写的程序可移植性好。
面试官:简述C语言程序的组成。
应聘者:一个完整的C语言程序主要包含宏定义与预处理和函数两大部分,其中函数又分为函数的首部和函数体两部分,函数体包括声明部分和执行部分。