|
第1章 C语言概述 |
|
C语言是一门高级计算机编程语言,该语言既可以面向硬件层编程,又能够实现交互性较强的人机对话界面。作为一名程序员,C语言是几乎所有计算机编程语言的基础。并且,C语言代码具有良好的可读性和可移植性。本章将介绍C语言的基础知识以及各类C代码编译器的使用等。
C语言是一门面向过程的高级编程语言,即C语言只能够按照程序预定的执行顺序依次进行功能代码的编写。用户在编程的过程中,需要将待解决的问题抽象成一个功能执行过程,并且对每个过程进行细分,再使用C语言编写不同功能的函数以便进行调用。本节将具体讲解C语言的基本结构以及注释方法等。
面向过程编程就是按照程序功能所执行的顺序一步一步进行编程。例如,用户使用C语言来描述小明在学校里的一个早晨,对其进行分析如下:
1)起床;
2)刷牙;
3)洗脸;
4)上厕所;
5)穿衣服;
6)吃早餐。
以上6件事情就是小明在早晨必做的事情。然而在面向过程编程中,如果用户将这6件必做的事情按照规定的顺序进行程序编写后,其最终的程序功能只按照这样的顺序执行,不能够再改变这些动作的顺序。即这些动作不能够独立存在,只有串在一起才能实现其预定的功能。
注意 在面向对象编程中,实现程序功能的每个动作是可以独立存在的,并且可以相互调换执行顺序。例如,小明起床后就可以穿衣服等。
但是,面向过程编程有一个最大的缺点,那就是用户不能随意改写原来的程序。这是因为面向过程编写的程序本身已经是一个整体了,如果需要改写,则必须进行代码的全部重写。但是,目前仍有许多程序员在学习和使用C语言,其原因在于C语言是学习其他高级编程语言的基础,并且在硬件编程中,大部分还是使用C语言进行的。
C语言的基本结构包括主函数和程序体两个部分。其中,主函数是指程序的入口函数main(),而程序体则包括输入/输出和功能处理。本节将分别介绍主函数和程序体的相关知识。
1. 主函数
在C语言中,程序执行的入口都是从主函数main()开始的。主函数main()的基本结构如下:
返回值类型main() //主函数开始
{
…… //程序体
return返回值; //返回值
}
如上所示,主函数是可以有返回值的。而该返回值是留给其他调用该程序的程序所使用的,这些返回值类型可以是int、void以及char等。
注意 如果用户为程序的主函数指定了返回值类型,则应该在程序结束时返回相应的类型值。但是,若用户将主函数的返回值类型设置为void时,用户可以不用返回任何值。
例如,用户需要在程序结束时返回一个整型的数值,则主函数的编写形式如下:
int main() //主函数开始
{
…… //省略程序体
return 0; //返回整型值
}
注意 在C语言中,主函数返回值为0时,表示该程序是正常结束的。如果返回非0值,则表示该程序在执行的过程中出现了异常,导致程序非正常结束。
2. 程序体
在程序体中,包括数据输入/输出以及功能处理。其中,数据输入/输出是实现程序交互性最为重要的一个功能。例如,用户需要使用C语言实现获取数据并将处理后的结果输出显示的基本功能。具体的代码如下:
…… //省略部分代码
int a=0,b=0,c=0; //定义并初始化变量
printf("请用户输入数据a:\n"); //输出提示语
scanf("%d",&a); //获取用户所输入的数据并赋值给变量a
printf("请用户输入数据b:\n");
scanf("%d",&b);
c=a+b;
printf("计算结果为:\n");
printf("%d\n",c);
…… //省略部分代码
C语言的程序体结构如上面的代码所示,其中包含了输入/输出以及功能处理代码。用户可以将这段代码复制到编译器中进行编译、执行。其运行结果如图1.1所示。
图 1.1 C代码运行结果
注意 函数scanf()的作用是获取用户输入的数据并赋值给相应的变量。函数printf()的作用是向计算机输出设备输出数据。一般情况下,计算机的输出设备是指计算机的显示器。关于这两个函数的具体使用方法将在后面详细地进行介绍。
C语言除了这两个主要的结构以外,还应该包括预处理结构。在预处理结构中,用户可以将包含其他代码的文件或者头文件包含到工程中一起编译,也可以对一些标识符进行重新定义等。例如,用户常用的预处理代码如下:
#include<stdio.h> //包含C语言的标准输入/输出头文件
#define size 10 //重新定义标识符,将标识符size赋值为10
…… //省略部分代码
注意 关于预处理结构的相关知识,将在后面的章节中向用户进行具体的讲解。
代码注释在程序中的作用是对关键的代码进行解释。尽管代码注释是代码中的一部分,但是代码在编译时,注释会被忽略掉。通过代码注释,程序员就可以非常轻易地理解对方所编写的代码了。一般情况下,C语言的代码注释包括两种,分别是单行注释和多行注释。其中,单行注释使用双斜杠作为注释符,即“//”。例如,用户对下面的代码做当行注释,具体的注释方法如下:
…… //省略部分代码
int a=10; //定义并初始化整型变量
如上面的代码所示,用户使用双斜杠“//”作为注释符对代码进行注释。多行注释则是使用符号“/*”和“*/”进行注释。例如,用户使用多行注释符对代码进行注释,具体方法如下:
…… //省略部分代码
printf("%d\n",&a); //*输出变量的值并换行*/
如上所示,多行注释符不仅可以注释多行代码,还可以注释单行代码。
注意单行注释符只能用于注释单行代码,多行注释符必须是成对出现的,否则,程序编译时会出现编译错误。
TC(Turbo C)编译器是初学者比较常用的一款C语言编译器。在TC编译器中,包含了代码编译器、目标文件链接器等。TC编译器是初学者必不可少的一种编程工具。本节将具体讲解TC编译器的编译环境以及如何使用TC编译器编译执行代码。
实际上,TC编译器是一个Windows命令行窗口,其中包含了一般Windows视图窗口的标题栏、菜单项以及代码编辑区等。但是,用户只能够使用键盘操作TC编译器,而不能使用鼠标直接进行操作。具体的编译器窗口如图1.2所示。
图 1.2 TC编译器窗口
注意 如图1.2所示,用户可以使用键盘或者快捷键操作该窗口。
在TC编译器中,用户主要的操作都集中在编译器的菜单命令上。因此,用户熟练操作TC编译器的菜单项也是一种非常重要的技能。本节将具体介绍TC编译器的菜单项功能以及快捷键等相关的知识。
1. File菜单项
File菜单项是编译器最为常用的一个菜单,在该菜单下一共包含9个子菜单,这些子菜单的具体功能及其快捷键如表1.1所示。
注意 如表1.1所示,用户可以根据表中所列出的各种功能对子菜单进行选择。
2. Edit菜单项
Edit菜单项的作用是编辑源代码。当用户选择该菜单项后,编译器将光标自动显示在代码编辑区中。此时,用户就可以在光标处编写代码了。
注意 Edit菜单项下没有任何子菜单。
3. Run菜单项
Run菜单项的作用是运行已经编写好的程序,该菜单项下有6个子菜单,这些子菜单的具体功能如表1.2所示。
该菜单项下的所有子菜单都是在调试程序时经常使用到的。因此,用户必须熟练掌握这些子菜单的功能以及快捷键的使用。
4. Compile菜单项
Compile菜单项的作用是编译、链接,其快捷键是Alt+C。该菜单项下包含了6个子菜单项,具体的功能如表1.3所示。
例如,当用户选择Compile菜单项下的子菜单Get info时,可以获取到有关当前源文件的路径、文件名、文件字节大小、编译中的错误数目、可用空间等相关信息,如图1.3所示。
图 1.3 使用子菜单Get info获取当前源文件的相关信息
5. Project菜单项
Project菜单项主要用于操作当前项目。其中包括修改项目名称、终止编译、清除项目文件以及删除项目信息等相关操作的子菜单。
注意 用户可以在实际的操作中,对Project菜单下的子菜单功能进行学习、掌握。
6. Options菜单项
Options菜单项的作用是选择与编译器相关的信息。对于初学者而言,该菜单下的相关操作应该谨慎对待。该菜单下包含了7个子菜单项,具体的功能如表1.4所示。
注意 用户可以根据需要选择表1.4中的子菜单功能。但是,一般情况下,用户不需要使用这些菜单对编译器相关的设置进行修改。
上面所介绍的操作菜单项是用户在编写C代码以及编译执行程序时所需的必要操作菜单命令。但是,对于TC编译器的其他菜单项,用户只做简单的了解即可。例如,菜单项Debug和Break/watch。对于TC编译器的菜单项功能及其快捷键,用户可以在实际的操作中进行深入学习和掌握。
一般情况下,用户需要在本地计算机中安装TC编译器之后才能够正常使用该编译器编写、编译执行C代码。因此,本节将讲解如何安装TC编译器以及如何在TC编译器中编写代码。
1. 安装TC编译器
TC编译器的安装程序包括英文版和中文版两种,用户可以根据喜好对其进行选择并下载。下面具体介绍一下TC编译器的安装步骤。
1)双击打开安装程序,如图1.4所示。
图 1.4 打开TC编译器安装程序
2)在安装向导对话框中,单击“下一步”按钮,选择需要安装的组件,如图1.5所示。
图 1.5 选择需要安装的组件
在这一步中,可以选择安装的组件类型。一般情况下,使用默认的组件即可。
3)选择好组件后,单击“下一步”按钮,切换到“选择安装位置”界面,如图1.6所示。可以单击“浏览”按钮,选择TC编译器要安装的位置。一般情况下,建议保持默认的安装路径即可。
图 1.6 选择编译器程序要安装的位置
4)选择好安装路径后,单击“下一步”按钮,选择“开始”菜单的快捷启动文件名,如图1.7所示。
图 1.7 选择快捷启动文件名
5)选择完毕后,单击“安装”按钮,开始安装TC编译器程序,如图1.8所示。一般情况下,安装编译器程序需要等待30秒左右即可完成。完成安装后,安装程序将提示已安装,如图1.9所示。
图 1.8 开始安装TC编译器
图 1.9 安装程序提示已安装
至此,TC编译器程序已安装在用户的本地计算机中。用户可以通过单击“开始”|“所有程序”命令进行查看。
2. 编写C代码
TC编译器安装成功后,可以用两种方法编写C程序。第一种是直接在TC编译器的代码编辑区中进行编写,如图1.10所示。在编译器的代码编辑区中编写代码时,只能够使用键盘移动光标和操作菜单项,而不能够使用鼠标。这样可以锻炼初学者对菜单命令和快捷键的使用。
图 1.10 TC编译器的代码编辑区
注意 在TC编译器的代码编辑区中编写完代码后,可以直接使用键盘对编写的程序进行编译、执行等相关的操作。
第二种编写代码的方法是使用代码编辑器,该编辑器是在安装TC编译器时安装的一个组件。代码编辑器的主窗口与Windows窗口相同,如图1.11所示,可以在窗口的空白处编写代码,并且代码中的关键字都会以特定的颜色进行标识,以提示用户是否存在关键字拼写错误等,如图1.12所示。编写完代码后,可以单击“文件”|“保存”命令,对当前所编写的程序进行保存,如图1.13所示。
图 1.11 代码编辑器主窗口
图 1.12 编写代码后的代码编辑器窗口
注意 用户不仅可以使用代码编辑器编写C程序代码,还可以使用其编写不同语言的计算机代码。
图 1.13 选择“保存”菜单项
注意 在本书中,用户只能够将代码文件保存为C源文件,即文件后缀名为“*.c”。
用户也可以使用工具栏中的“保存”按钮 对源文件进行保存。代码编辑器只是用于编写代码和实现代码文件的保存操作,对于源文件的编译、执行等操作,仍需要在TC编译器中进行。
注意关于使用TC编译器打开代码编辑器所保存的源文件的相关操作,将在1.2.4小节中进行具体的讲解。
用户需要在TC编译器中打开已经编写好的C源程序时,可单击File|Load命令并输入需要打开的源文件名或源文件所在的完整路径,如图1.14所示。
图 1.14 打开源文件
用户输入源文件所在的完整路径后,按Enter键,即可打开所需的C源代码,如图1.15所示。
图 1.15 打开所需的C源代码
注意 用户不论是使用TC编译器的代码编辑区或者是代码编辑器所编写的代码,都可以使用上面的方法在TC编译器中打开。
用户在TC编译器中打开源代码后,就可以对其进行编译。其操作步骤如下。
1)按键盘上的F10键将焦点移动到菜单项Compile上,表示将选择该菜单项所具有的功能,如图1.16所示。
图 1.16 将焦点移动到菜单项Compile上
2)当焦点移动到该菜单上后,按Enter键,将弹出子菜单项,如图1.17所示。
图 1.17 打开菜单项Compile的子菜单
此时用户可以使用键盘上的方向键对子菜单进行选择。通常情况下,用户可以单击Compile|Build all、Make EXE file或者Link EXE file命令对源代码进行编译,并生成相应的文件以备调用。当程序编译成功后,程序将弹出提示,如图1.18所示。
图 1.18 源代码编译成功的提示
如果用户所编写的源代码存在语法或者简单的逻辑错误,则编译器会弹出编译错误的提示,如图1.19所示。当源代码出现错误时,用户可以通过Message框中的错误提示,查找错误代码并进行修改。
图 1.19 源代码编译错误的提示
注意 用户不能使用Compile菜单下的子菜单项Compile to OBJ编译生成一个目标文件,因为该菜单操作并不会对用户所编写的代码进行任何的语法检查等操作。
用户在修改代码或者编译源代码时,不应该全部依靠编译器对代码中的错误进行检查,而应该依靠自身扎实的编程技术。只有这样,才能够编写出效率极高的C程序。
C源代码编译成功后,用户就可以执行源代码查看代码运行后的结果。具体的操作步骤如下。
1)按键盘上的F10键将焦点移动到菜单项Run上,如图1.20所示。
图 1.20 移动焦点到菜单项Run上
2)当焦点移动到该菜单上后,按Enter键,将弹出子菜单项,如图1.21所示。
图 1.21 打开子菜单项
在子菜单项中直接选择Run,即可运行编译后的源代码,如图1.22所示。
图 1.22 源代码的执行效果
注意 用户也可以使用快捷键Ctrl+F9执行源代码。
本节主要向用户讲解了关于TC编译器的菜单命令,编写源代码以及编译、执行源代码等相关的操作方法。实际上,对于TC编译器的菜单命令,用户只需要经常使用,就可以非常熟练地对其进行操作了。通过本节的学习,用户应当能够掌握使用TC编译器编写C源代码以及编译、执行代码的相关操作方法。
VC编译器是微软公司推出的一款可视化集成开发环境。用户可以直接在VC编译器中进行代码编写、编译以及执行等操作。在该编译器中,用户还可以编写其他类型的计算机代码,如C++、VB等。本节将介绍VC编译器的相关操作方法。
VC编译器是以工程的概念对各种文件进行管理的。其窗口样式与Windows窗口的样式相同,其中包括菜单栏、工具栏以及状态栏等常用工具,如图1.23所示。VC编译器将代码编辑区、工程项目管理区以及调试输出窗口进行了集成设计。因此,用户使用一种工具就能够完成整个编程的需要。
图 1.23 VC编译器主界面
注意 在VC编译器中,可以直接使用鼠标进行操作,并且操作十分简单、可靠。所以,建议初学者直接使用该编译器对C源代码进行编译、执行。
在VC编译器中,可以单击“文件”|“新建”命令,打开“新建”对话框,新建C语言源文件,如图1.24所示;还可以通过单击编译器工具栏上的“新建文档”按钮 ,创建一个空白文档,如图1.25所示。
图 1.24 “新建”对话框
图 1.25 新建一个空白文档
注意 如图1.24所示,用户在“文件”属性列表中不能找到C源文件的任何踪迹。这是因为VC编译器本身就是一个基于C++语言所设计的编译器。因此,用户不能够再使用菜单“文件”|“新建”命令新建一个C源代码文件。
接着单击工具栏上的“保存”按钮 保存新建文档。此时,编译器将弹出“保存为”对话框,如图1.26所示。在该对话框中,用户需要将文件名修改为带C源文件后缀名“.c”即可,如图1.27所示。
图 1.26 “保存为”对话框
图 1.27 修改文件的后缀名为“*.c”
后缀名修改完成后,单击“保存”按钮,即可将新建的文档保存为C源代码文件。
用户在VC编译器中编写C源代码的方法与在TC编译器中编写代码的方法相同,既可以直接在代码编辑区中进行编写,也可以使用Windows记事本编写程序,并保存为C源文件,之后使用VC编译器打开亦可。
注意 关于如何使用VC编译器编写C程序代码,请用户参考前面小节中讲解的使用TC编译器编写程序的方法。
在VC编译器中,可以使用两种方法对C源代码进行编译。第一种方法是使用“编译”菜单,如图1.28所示。
图 1.28 选择“编译”菜单对代码进行编译
第二种方法是直接单击工具栏中的“编译”按钮 ,即可实现对源代码的编译。当源代码编译完成后,编译器会在调试输出窗口输出相关的调试信息,如图1.29所示。用户根据编译器输出的调试输出信息,即可很直观地对代码进行修改。
图 1.29 调试输出窗口输出相关的调试信息
注意 在调试输出窗口的对应错误描述上双击,即可将代码编辑区中的光标移动到对应的错误处。
注意 这种方法比较快捷、直观。
用户使用VC编译器执行源代码的方法有两种。第一种方法是通过工具栏上的“执行”按钮 。
第二种方法是通过“编译”菜单下的“执行”命令,如图1.30所示。如果代码执行成功,则将弹出程序的运行窗口,如图1.31所示。
图 1.30 使用“编译”菜单下的“执行”命令
当然,用户在执行程序的过程中,可能会出现执行失败的情况。这种情况多半是因为程序在链接编译后的目标文件时出现了错误。因此,用户在执行代码之前应当先编译链接一下程序,查看是否存在链接错误。
注意用户可以使用“编译”菜单下的“构件”命令或者单击工具栏上的“链接按钮 ,实现代码的编译链接错误检查。当编译链接出现错误时,编译器的调试输出窗口同样会出现错误提示。
图 1.31 程序执行结果
“Hello World”程序几乎是所有C语言初学者入门必须编写的一个经典程序。该程序虽然简短,但是其包含了C语言的基本结构。该程序的具体代码如下:
#include<stdio.h> //包含C语言标准输入/输出头文件
main() //主函数开始
{
printf("Hello World"); //输出信息
getchar(); //暂停程序,获取用户输入的字符时返回
return 0; //程序正常结束
}
在上面的“Hello World”程序中,用户使用指令#include将C语言标准的输入/输出头文件“stdio.h”包含到该程序文件中,并且在主函数中,使用函数printf()直接向计算机的输出显示设备输出了字符串“Hello World”。函数getchar()的作用是暂停程序的运行,但是当用户输入一个字符时,该函数将返回,使程序继续运行结束。用户可以将上面的代码复制到编译器中进行编译、链接。该程序运行的结果如图1.32所示。
图 1.32 程序运行结果
用户可以打开随书光盘中的实例代码编译运行,并在该程序结构的基础上对其进行扩展,达到学习和掌握的目的。
本章主要向用户介绍了C语言的基础知识和不同类型的C代码编译器的使用方法。本章的重点在于掌握两种不同类型编译器的使用方法和C语言程序的基本结构,而难点在于C程序代码的调试操作方法的掌握和学习。通过对编译器的学习,用户可以使用不同的方法实现相同的目的。通过本章的学习,用户应当对本章所讲解的知识点有非常深入的理解。在第2章中,将向用户讲解C语言常量和变量的相关知识。