轻松学:C++语言(txt+pdf+epub+mobi电子书下载)


发布时间:2021-03-06 04:03:51

点击下载

作者:杨波

出版社:中信出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

轻松学:C++语言

轻松学:C++语言试读:

前言

C++历经30多年的发展,依旧是一门主流的程序设计语言。在开发大型软件(如操作系统、数据仓库、图形图像处理、编译系统等较为底层的系统软件)上C++具有很突出的优势与效率。同时,学习C++语言有助于读者理解计算机运行原理,便于设计出更加健壮、稳定的系统。在就业方面,C++程序员普遍具有较高的身价,一名优秀的C++程序员无疑具有更好的就业机会与市场竞争力。

目前图书市场上关于C++语言程序设计的图书不少,但真正适合于C++初学者的书籍却并不多,这些书籍往往语法细节过多,需要大量的计算机相关知识体系,对于初学者无疑是一个巨大的挑战。基于这个原因,笔者根据自己多年使用C++编程的经验和心得体会写了这本书,希望能够引领读者进入C++编程的殿堂。本书针对C++初学者的基础条件,配合大量的图表,简明扼要地总结了C++的语法要点和结构;实例程序简单易懂,循序渐进,使读者能更加深刻、全面地理解C++程序设计语言,灵活、高效地利用C++语言进行程序开发。

笔者结合自己多年的C++开发经验和心得体会,利用Visual Studio 6.0平台,花费了一年多的时间写作本书。希望读者能在本书的引领下跨入C++的开发大门,并成为一名开发高手。本书全面、系统、深入地介绍了C++基础知识和开发技术,并以大量示例贯穿于全书的讲解之中,最后还详细介绍了教学管理系统项目案例的开发。学习完本书后,读者应该可以进行独立的项目开发。

本书特色

1.讲解由浅入深,循序渐进,适合各个层次的读者阅读

本书从C++的基础开始讲解,逐步深入到C++的高级开发技术及应用,内容从易到难,讲解由浅入深,循序渐进,适合各个层次的读者阅读。

2.贯穿大量的开发示例和技巧,迅速提升开发水平

本书在讲解知识点时贯穿了大量短小精悍的典型示例,并给出了大量的开发技巧,以便读者更好地理解各种概念和开发技术,体验实际编程,迅速提高开发水平。

3.详解典型项目案例开发,提高实战水平

本书详细介绍了教学管理系统项目案例的开发。通过这个项目案例,可以提高读者的软件项目开发水平,从而具备独立进行项目开发的能力。

本书读者对象

● C++初学者。

● 想全面学习C++开发技术的人员。

● C++专业开发人员。

● 利用Visual C++做开发的工程技术人员。

● C++开发爱好者。

● 大中专院校的学生。

● 社会培训班学员。

● 需要一本案头必备手册的C++程序员。第1章我的第一个C++程序

本章将重点阐述如何开发一个完整的控制台应用程序,并给出一个示例。其中的某些内容读者可能暂时还不能理解。这没有什么关系,不太理解的地方可以先跳过,等学习完后面的章节,再回头来阅读本章,一定会有所领悟的。同时,笔者还将引导读者对该示例程序进行修改,建立属于自己的控制台程序。本章主要涉及到的知识点如下所述。

·Visual C++向导的使用:让读者可以快速地建立自己的程序框架。

·分析C++示例程序:让读者可以了解一个完整C++程序的主体结构。

·创建自己的C++示例程序:让读者可以按照要求对示例程序进行修改,建立起第一个属于自己的C++程序。1.1 神奇的“向导”——创建控制台程序

大家去一个地方旅游,为了少走弯路,常常需要向导的带领。来到这个程序设计的世界,同样为了让大家少走弯路,Visual C++也提供了一个向导来带领大家快速地开始设计之旅。下面笔者将介绍如何启动控制台程序向导。启动向导的方法如下:(1)启动Visual C++集成开发环境。(2)单击“File”|“New”菜单,打开“New”对话框。(3)选中Projects标签,在Project name中输入一个名称作为工程名称,并把保存路径Location设置为有效路径,如图1.1所示。(4)单击OK按钮,即可启动控制台程序向导,其向导界面如图1.2所示。图1.1 创建Hello World工程文件图1.2 控制台向导对话框

注意:所谓控制台程序就是没有独立窗口的程序。一般是在命令行运行,输入输出通过标准IO进行,不像界面程序可以通过鼠标单击进行操作。1.2 Hello World示例

在讲解完如何启动控制台程序向导后,现在笔者将举例说明,如何使用控制台程序向导开发一个简单的C++程序。其实这非常简单,读者只需要把前一节图1.2所示的向导启动后,直接单击Finish按钮,向导就会自动完成简单控制台程序框架,并会出现如图1.3所示的生成报告。单击OK按钮后,便生成了控制区台程序框架。

但这只是一个空的框架结构,没有实际的内容,所以必须在当前工程中添加一个新的源代码文件,并且输入程序代码。生成程序的方法为:(1)单击“File”|“New”菜单,在“New”对话框中选择“Files”标签。(2)新建一个名为Test的C++源文件加入到当前HelloWorld工程之中,如图1.4所示。图1.3 向导报告生成图图1.4 添加文件到当前工程(3)在代码编辑窗口中输入代码,如图1.5所示。输入的内容为1.1所示代码。图1.5 工程主窗口代码1.1 HelloWorld输出代码(4)单击“Build|Build”菜单对源代码进行编译,并生成可执行程序。或者单击Build工具栏中的Build按钮进行编译,生成可执行程序。编译开始后,会在Build窗口中实时输出相关信息。如图1.6所示。如果代码没有语法错误,编译完成后就会进行Linking(连接),最后生成HelloWorld.exe执行文件。

如果要看程序执行效果,可以单击“Build|Execute HelloWorld.exe”菜单,也可以单击Build工具栏中的“Execute program”按钮执行生成后的程序。“HelloWorld”执行程序最后的效果如图1.7所示。读者也可以自己试着运行一下,看看效果是不是一样的。图中“Press any key to continue”这句话是在Visual C中直接运算时加上的,在实际程序中,并没有这句话输出,以后不再复述。图1.6 Build输出信息窗口图1.7 执行效果1.3 解释这个C++程序

在这里笔者只对相关代码进行简单的说明,详细解释将会在以后的章节中学习到。一个完整的C++程序的主体框架如下:

函数声明部分

Main函数部分

{

Main函数实现部分

}

现在回忆一下前面的代码1.1:01 #include   //包含头文件

第1行包含了一个头文件,这个头文件的作用就是对输入输出进行函数的声明。

注意:所有的函数必须先声明后才能使用。这就好像是去参加旅行团玩,必须先到旅行社报名,然后才能参加出游一样。02 int main() //主函数

第2行定义了一个Main函数,在这里的作用读者只需要知道是程序的开始就行。04 cout<<"Hello World"<

第4行是代码最重要的部分,这一行代码看起来很简单,其实可以分解为如下四个部分:

·cout对象,是C++编程语言互换流中的标准输出流对象,在这里读者可以理解为屏幕。

·<< 运算符,每次调用的时候就会向输出设备(cout对象)输出东西。

·“Hello World”字符串。

·endl结束输出流并换行。

在分解完后,现在就可以很清楚地知道这行代码的意思,即向屏幕(cout)输出(<<)“Hello World”字符串。05 return 0; //返回并退出程序

第行,表示整个程序结束并返回。1.4 创建自己的Hello World

在前一节笔者对HelloWorld代码进行简单的讲解,希望读者都看明白了。现在请读者跟随笔者对这段代码进行修改,创建属于自己的HelloWorld程序。在这里先提出两个设计要求:(1)再另起一行,打印出This is my first program字符串。(2)先提示用户输入信息,然后接收用户输入的字符串,最后打印出来。

为实现第1个要求,只需要复制前一节的代码,并把其中第4行粘贴到第5行,然后把字符串修改为 This is my first program就可以了,如代码1.2所示。按照1.2节所示的方法进行编译和生成可执行文件并执行。效果如图1.8所示。代码1.2 按要求1修改的代码

现在要实现第2个要求,就有一点难度了,因为要求可以接受用户的输入。那么如何实现呢?这里就要用到cin这个对象,读者可以把其当成键盘,只要键盘上敲击按键,这个对象就可以接收到相应的字符。

不过cin这个对象没有存储的功能,所以要使用“>>”运算符(每次调用的时候就会接收输入设备(cin对象)输入的东西)把其接收的字符临时存放到变量(这个概念将在以后讲解)之中,使用的时候再输出到屏幕,如代码1.3所示。代码1.3  按要求2修改代码

按照1.2节所示的方法进行编译、生成可执行程序并执行。注意,因为在程序中有输入,才会有对应的输出,所以在结果图中,把输入输出包括在内,简称输入输出结果,如图1.9所示。图1.8 按要求1执行效果图图1.9 按要求2输入输出结果

最后请读者根据上面提供的程序代码自行修改HelloWorld示例程序,创建属于自己的C++程序并编译执行,看看效果是否和上图一致。第2章学习基本的C++语法

本章中笔者将介绍C++中的很多基本知识,只有掌握了这些C++编程语言的基础知识,才能设计出有实用价值的程序来。本章主要涉及到的知识点如下所述。

·数据和程序的概念:让读者明白什么是数据,什么是程序。

·数据的类型:让读者知道C++中的数据有哪些类型,存储空间是多大。

·分隔符与注释符:知道C++中如何分隔语句,如何注释代码。

·关键字和标识符:认识C++中哪些是关键字?哪些是标识符。

·变量与常量:明白什么是变量,什么是常量,及如何使用。

·引用变量:明白什么是引用变量及如何使用。2.1 数据与程序的区别

软件是由程序和数据组合而成的。设计软件就像在家做饭,必须先准备好菜品(相当于数据),然后使用各种烹饪菜品的菜谱(相当于程序)最终作出来食品(软件)。所以先搞清楚数据和程序区别是非常重要的。2.1.1 烹饪的菜谱——程序

在计算机的世界中,程序是计算机的一组指令,经过编译和执行才能最终完成程序设计的动作。程序设计的最终结果是软件。

用通俗一点的语言来说,程序就是规定了做事的过程。例如,烹饪时使用的菜谱,就是一种程序,其规定了使用的食材大小(指令)、调料的搭配(指令)、烹饪的时间长短(指令)等。如果不按照其规定的这些指令来做,那么最后作出来的饭菜(软件)就可能很难以入口。

计算机只能识别指令,所以只有通过指令的方式来让计算机为大家做事。而这个做事过程中所涉及的指令集就是“编”出来的程序(菜谱)。

在C++中程序由单词样的单元和空白所组成。空白将单词样的单元分开,这些单词样的单元称为标识。标识与空白的组合构成了程序。2.1.2 烹饪的菜品——数据

所有由程序操作的实际的值叫做数据,其有多种表达的形式。数据是由数字、字母和符号组成的。打个比方说,数据好比烹饪时所必需的菜品和食材,有了这些东西才能作出食物,不然再好的菜谱也是白搭。在计算机的世界中,程序同样必须有了数据才能成为真正的程序。2.2 标识符与关键字

在读者理解了程序与数据的概念后,现在笔者就开始正式地向大家介绍C++中的基础知识,本节主要讲解的是C++的标识符和关键字。2.2.1 什么是标识符

和许多高级语言一样,C++也制定了一套用来表示程序中变量、常量、数据类型等基本单位名称的符号,这些符号被称为标识符。

标识符的命名应当遵循如下几条规则:

·标识符的第一个字符必须是字母或者下划线。

·标识符中不应有除字母、数字和下划线以外的字符。

·标识符的长度一般不超过31个字符。

下面列举一些合法的标识符例子:Abc  Good  Hello  A_b  dd_33  bFlg

而不合法的标识符例子如下:3St  Abc!  Dd*33  good-bye

C++中标识符是可以大写,也可以小写的。不过大写和小写是有区别的,即对应的大小写字母会被当作不同的标识符。例如:Good和good被当作不同的标识符,Hello和HELLO也是不同的标识符。2.2.2 需要注意的关键字

关键字是指不能由使用者声明的词,其为C++语言所保留,具有特殊的含义,用来表示固定语句、预定义类型说明、预定义函数等。有了这些关键字,C++编译器才能正确识别我们输入的程序代码是如何分隔的,这就好像写应用文时为了突出重点,常常都把关键字或者词进行标注一样。表2.1列出了一些常用的关键字,但并不是全部,请读者注意。表2.1 常用关键字

注意:在C++中不能用保留字或者关键字来命名标识符。

在Visual C++中,为了让使用者阅读方便,所有的保留关键字都会被自动标识出来。读者可以自己在Visual C++中试一试。2.3 分隔符与注释符

C++中除了标识符外,还有两种特殊作用的符号,即用来分隔代码语句的分隔符和起说明作用的注释符,下面就将分别进行讲解。2.3.1 划分语句的分隔符

分隔符又被称为C++中的标点符号。用来将单词或者程序分隔,其表示某个程序的结束和另一个程序的开始。C++中的分隔符包括如下几种:(1)空格符:用来作为单词与单词之间的分隔符。(2)逗号:用来作为说明多个变量的分隔符,或者多个参数(将在后面的章节讲解)之间的分隔符。(3)分号:用来作为C++中语句的结束分隔符。(4)花括号:用来构造程序实体的分隔。2.3.2 使语句无效的注释符

注释在程序代码中起对程序语句的注解和说明的作用,是为了方便读者阅读程序代码而采用的方法。对计算机而言是不知道的,在程序编译时,注释会被自动从程序代码中忽略掉。换句话说,这就好比大家在读书时所做的读书笔记,可以标记在书上,也可以记在笔记本上,但对书的内容(代码)并没有任何的影响,只是起一个说明的作用。C++中采用两种注释方法。(1)使用“/*”和“*/”括起来进行注释,在“/*”和“*/”之间的字符都被作为注释符处理,适用于多行注释信息,如图2.1所示。图2.1中从“/*”开始一直到“*/”结束的两行字符都是被当作注释信息处理的。图2.1 多行注释(2)使用“//”,从“//”开始直到所在行的行尾,所有字符都被当作注释处理。适用于单行注释信息,如图2.2所示。图2.2 单行注释

说明:注释的方法,根据不同的情况进行选用,增强了灵活性。2.4 各式各样的“口袋”——变量

在上一章的代码1.3中,笔者介绍了如何获取用户输入的键盘信息,并将结果输出到屏幕上,不知道读者还记得吗?其中用于存储用户输入键盘信息的就叫做变量。2.4.1 程序中的会变的“口袋”——定义变量

众所周知计算机具有存储功能。例如,可以用记事本打开一个保存好的文本文件,用画图工具打开一幅图,对其进行修改后又可以保存起来。那么程序中,是如何把数据存入到计算机当中,又是如何访问这些数据的呢?

其实在程序中,把临时存放数据的场所称为变量。在代码中可以只使用一个变量,也可以使用多个变量。其就像是一个一个的口袋,而数据就像是口袋中装的东西。当然,在放东西和取东西之前,必须要要创建这么一个“口袋”,然后才能把东西放入这个口袋之中。换句话说,就是在使用变量前,必须先要创建一个变量。创建变量的C++语句称为变量的声明。其格式如下:变量数据类型 变量名;

也可以使用如下格式同时声明n个同类型的变量:变量数据类型  变量名1,变量名2,…,变量名n;2.4.2 变量的数据类型

变量数据类型的作用是规定了变量中所能存放数据的类型。如果不加以规定,计算机可能无法理解数据的含义。这就像吃的东西必须放在食品袋中,垃圾必须放入垃圾袋中,如果随意乱放就会造成混乱一样。常用的数据类型将会在后面的章节进行讲解。不同类型的变量,不能在同一语句中进行声明,例如:变量类型a  变量名1,变量类型b  变量名2; 

这样的方式是错误的。2.4.3 变量名

变量名就是变量的名字,就好像每个人都有自己的名字一样,给变量起名的意义是为了区分不同的变量。不过变量名也是不能随便取的,除了必须遵循标识符命名规则外,还应该尽量遵循下面几条规则。虽然其都不是必须得遵循的,但为了方便对代码的阅读和理解,在程序设计时应尽量采用。

见名见意,指当看到这个变量的名称时就能望名知意,这样能便于读者阅读与进行程序设计。例如:用count来作为计数器变量名,用len作为长度变量名,用age作为年龄变量名等。

尽量不用汉语拼音。例如:声明一个姓名变量,应该使用name为变量名,而不是用xingming作为变量名。

命名不宜过长。用很长一串字符来命名会减慢编程的速度,也会使阅读程序困难。不要用过长的名称来命名变量,一般采用缩写来命名,例如:用init来表示初始化等。

采用驼峰标记法和匈牙利标记法来命名变量。(驼峰标记法以小写字母开头,下一个单词用大写字母开头,比如numOfStudent、typeOfBook等,这些大写字母看起来像驼峰,因此得名。而匈牙利标记法是在变量名首添加一些字符来表示该变量的数据类型,比如iNumOfStudent是表示学生数的整型变量,fResult是表示结果的浮点型变量等。)2.2.4 变量的初始化

声明变量之后必须对其进行初始化才能使用,否则会产生意想不到的错误。因为计算机中的存放空间是有限的,在有些情况下,创建一个变量的时候并不是真的重新做一个“口袋”,而是把“弃置不用的旧口袋”拿来用,这些旧“口袋”中还有旧的数据,这些数据是不确定的,所以必须把其处理掉才能使用,即把变量初始化。变量初始化的格式如下:变量名=初始值;

也可以在声明变量的时候进行初始化,其格式如下:变量类型 变量名=初始值;

在变量初始化的时候,设置的初始值一定要符合变量的数据类型。例如:int n=1.5是错误的,而inti=1就是正确的。2.5 常用的基本数据类型

在C++程序中,不同的数据类型以不同的方式进行存取和处理。本节笔者将介绍几个常用的基本数据类型及声明这些数据类型变量的关键字。2.5.1 整数型

整数型是指没有小数部分的数,可以是正,也可以是负。例如日常生活中用到的88、-34、1234、2008、-300,-2008,0等都是整数。其中88、1234、2008等被称为正整数,0一般也被当作正整数。而-34、-300,-2008等被称为负整数。在C++中用int这个关键字来声明一个整数类型变量。例如:

int nCount;

int nNum;

int abc;.

整数型声明时进行初始化,其方法如下所示。int nCount=100;

注意:在程序中数据类型都是通过关键字来声明的。

知道了如何声明一个整数类型变量,现在就来讲讲其在计算机中可以表示的数值的范围是多少,如表2.2所示。表2.2 有符号整数范围

注意:整数变量能存储的最大值,是由计算机给其分配的存储空间的大小决定的。在不同的计算机系统中,其表示的范围是不同的。例如:16位机是使用2字节,而32位机则是使用4个字节。一般现在的电脑都是32位的。

虽然整数类型能表示的数已经比较大了,但有时候也有不够用的情况。例如:存放计算地球的周长是多少米,整个太阳系的直径是多少等数据。整数变量就不够了,所示C++中就引入了长整数类型。在C++中用long这个关键字来声明一个长整数类型变量。例如:

long lLen;

long lCount;

其存储数值的范围如表2.3所示。表2.3 长整数范围

注意:长整数和整数只是在16位机上有差异,在32位机上是无差异的。

在计算机中长整数可能会降低程序执行的速度,所以有时候为了节约空间和提高程序执行速度,C++中又引入了短整数。在C++中用short这个关键字来声明一个短整数类型变量,其数值的范围在16位和32位机上都是32767~-32768。例如:

short sCount;

short sNum;

short sLen;

日常生活中一般使用的都是正数,即数学中的自然数,负数比较少使用。为了在不增加存储空间和不影响执行速度的前提下,直接把存储整数的最大值扩大,C++中就引入了无符号数类型。C++中声明一个无符号整数类型变量,是在int关键字前加上unsigned关键字。例如:

unsigned int unCount;

unsigned int unNum;

unsigned int abc;

既然是把最大值扩大了,那么其数值范围也不同了,其数值范围如表2.4所示。表2.4 无符号整数范围

有无符号的整数变量,也就有无符号的长整数和短整数变量,其声明都是在原关键字前加上unsigned关键字。例如:

unsigned long ulCount;

unsigned long ulNum;

unsigned short usLen;

unsigned short usCount;

无符号短整数其数值范围在16位和32位机上为0~65535,无符号的长整数其数值范围如表2.5所示。表2.5 无符号长整数范围2.5.2 实数型

实数型数据是由一个整数部分、一个小数部分及可选的后缀组成的。例如:3.1415、0.5、0.875等都是实数型数据。在C++中把实数型数据按照其表示的数值的范围分为:单精度、双精度和长双精度3种数据类型。(1)声明一个单精度的实数变量,使用float关键字,所以其又被称为浮点型。例如:

float half;

float pi;

float num;

实数型声明时进行初始化,其方法如下所示。float half = 0.5;

实数在C++中也可以包含一个指数形式的数值,例如:

1.5e3其中1.5是尾数部分,4是指数部分,表示的数值为1500。

1.23e-2其中1.23是尾数部分,-2是指数部分,表示的数值为0.0123。

注意:字母e或E之前(即尾数部分)必须是有数字的。e或E后面的指数部分必须是整数。

单精度实数类型一般是以32位进行存储表示的,其数值范围为3.4E-38~3.4E+38,只能提供7位有效数字。(2)双精度数据类型和单精度数据类型类似,但其要占据两倍于单精度数据类型的存储空间。声明一个双精度实数变量,使用double关键字。例如:

double dbNum1;   

double dbNum2;

double dbNum3;

双精度实数类型是以64位进行存储表示的,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。(3)长双精度数据类型,理论上是双精度占用存储空间的两倍,但在实际中其只占用64位的存储空间。声明一个长双精度实数变量,使用long double关键字。例如:

long double dbNum1;   

long double dbNum2;

long double dbNum3;

长双精度实数类型的数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

注意:虽然实数表示的范围比整数大得多,精度也更高,但其并运算结果却不是绝对精确的,例如,60000000+1,整数的运算结果是60000001,而实数却是6e+7。2.5.3 字符型与字符串

字符型数据用来存储计算机中的字符。例如:‘A’,‘#’,‘z’,‘1’等都是字符型的数据。实际上,字符型数据只是存储字符的ASCII(American Standard Code for Information Interchange,美国标准信息交换码)码值。其是目前计算机中用得最广泛的字符集及编码,是由美国国家标准局(即ANSI)制定的,它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。

根据ASCII码标准,数值65代表大写的‘A’,而47则代表小写字母‘a’,表2.6列出了ASCII码前128个码的十进制表示,读者可以不必记住这些代码值,但必须理解每个ASCII码都与一个特定的数值相对应。表2.6 ASCII码表

看一下这张表,会发现有不少奇怪的字母组合,其含义如表2.7所示。表2.7 特殊字符的含义

在C++中声明一个字符型数据,使用关键字char,例如:

char no;

char yes;

char tmp;

字符型变量声明时进行初始化,其方法如下所示。字符型数据在计算机中以8位进行存储,其表示数值的范围为-128~127。char no=’N’;

在C++中还有一些是由单引号引起来的,由多个字符所组成的,但C++把其当作单一字符处理的特殊字符,称为转义字符。转义字符都具有特殊的功能,如表2.8所示。表2.8 转义实符

前面讲的都是有符号的字符型数据,如果要声明一个无符号的字符型数据,只需要在char关键字的前面加上unsigned关键字,其表示的数值范围为0~255。例如:

usigned char no;

usigned char id;

讲完字符型数据后,现在就来讲讲字符串型数据。那什么是字符串呢?其实字符串就是由零个或多个字符组成的有限序列。例如:“abcde”、“Hello”、“1234”这些都是字符串。字符串就相当于一个字符数组(这个概念将在数组一章中进行讲解)。

注意:在表示单独字符的时候,使用单引号,而在表示字符串或多于一个字符的时候使用用双引号。2.5.4 布尔型

布尔型是表示逻辑值的简单类型,只有两个值:false(假)和true(真),前者序号为0,后者序号为1。布尔类型数据最少,但用途广泛,主要用于程序设计中的流程控制和逻辑判断。声明一个布尔型的数据,使用bool关键字,例如:

bool bFlg;

bool bOpen;

bool bClose;

布尔型变量声明时进行初始化,其方法如下所示。bool no=false;

注意:在C++中,只要数值不等于0都表示真(包括负数),只有0才能表示为假。

在选择数据类型时,应尽量满足使用的要求。比如要计算有小数参于的运算,就应该选择精度较高的单精度实数类型或者双精度型,而不能选择整数型。但如果创建一个双精度的变量去存储整数1~100的和,那就是大大的浪费资源。所以也要注意节约计算机的存储资源。2.6 程序中的不会变的“口袋”——常量

前面介绍的变量数据类型,其所包含的值可以在程序中按需要而改变。而有时候一些数据是不应该被改变的。比如圆周率π就应该默认等于3.1415927…,一天就应该是24个小时。如果这些值被改变了,有可能导致最后程序发生错误。所以就需要一个不会被改变的“口袋”,其称为常量。2.6.1 创造不会变的口袋——定义常量

在C++中常量被分如下两种:

·文字常量,例如:整数888、字母b等都是文字常量。

·自定义常量,即自己声明的常量。

自定义常量的声明格式如下:const 数据类型 常量名=文字常量;

声明一个常量与变量的区别是在语句的前面多了一个const关键字。但常量必须在声明时进行初始化,并且在除声明语句外,在程序的其他地方不能再对其进行赋值。例如:2.1代码就是对常量进行了修改。代码2.1 修改常量的值

如果在Visual C++中对其进行编译的时候就会出现如图2.3所示的错误提示,导致生成可执行文件失败。图2.3 编译错误提示

注意:声明一个实型常量时,如果实型文字常量没有任何说明,那么默认为双精度实型常量;如果要表示单精度实型常量,则要在该实型文字常量后加上F或者f;如果要表示长双精度实型常量,则要在该实型文字常量后加上L或者l。

事实上,只要在程序中不改变变量的值,常量是可以用变量来代替的。但这样做是不够安全和严谨的。2.6.2 各种进制的常量

在计算机中,所有的数据都是采用二进制进行存放的,而不是大家常常接触的十进制。现在就简单地介绍一下,C++中各种进制的整数常量的表示方法。(1)十进制整数就是日常使用的数,例如:123、-123、0等。(2)八进制整数是以0开头的数,例如:0123等于十进制数83,计算方法为1×82+2×81+3×80=64+16+3=83。(3)十六进制整数是以0x开头的数,例如:0x123等于十进制数,计算方法为1×162+2×161+3×160=256+32+3=291。2.7 给变量起个“绰号”——引用

相信大家在日常生活中,都有过被别人取绰号或者给别人取绰号的经历,虽然这不是什么好事情,但有时候一些好记的绰号等过了十几年后,还可以叫得出来。在C++中也有一种专门存放其他变量“绰号”的变量,叫做引用变量。所以引用通常被认为是一种变更的别名。引用定义的格式有如下两种:(1)声明方式:数据类型 &引用名 变量名;(2)直接初始化方式:数据类型 &引用名=变量名;

一般情况下,定义引用时必须初始化。例如:

int i = 10;

int &n = i; //直接初始化

这里,n是一个引用,其是变量i的别名。所有在引用上进行的操作,实质上都会作用在被引用者上。例如:n=20;

因为n是a的引用,所以代码的实质是使i变为20。当然也可以将引用赋给另外一个变量,则该变量将具有被引用的变量的值。例如:int m=n;

这时,m具有被n引用的变量i的值,即20。引用的用途是用来作为函数的参数或者函数的返回值,将在本书的后章节中进行详细讲解。下面代码2.2是针对引用的示例。代码2.2 引用的示例

代码的第5行就是声明并初始化一个引用,这时候的引用就代表变量num,而代码第6行,是一个赋值操作(后面的章节进行讲解),改变了变量num的值。代码最后执行结果如图2.4所示。图2.4 引用示例结果

对于C++中的引用,有如下几点需要注意:

引用在定义时要初始化。

对引用的操作就是对被引用的变量的操作。

可以用一个引用给一个变量赋值,该变量的值是被引用的变量值。2.8 综合应用—用程序来计算圆的面积

经过前面的学习,相信读者已经了解了程序中如何定义和初始化变量和常量。现在笔者就向大家介绍如何运用常量和变量,如代码2.3所示。代码的功能是计算一个圆的面积,先提示用户输入圆的半径,然后根据圆的面积公式计算出圆的面积,最后将结果输出。代码2.3 计算圆的面积

程序的运行结果如图2.5所示。代码第4行声明并初始化常量PI,在实型文字常量的最后有一个F,表示这是一个单精度的实型常量。代码第5和第6行分别声明并初始化了半径变量r和面积变量fArea。代码第9行为计算圆的面积,其和一般的数学表达式看上去差不多,不过也有点不同,其中和运算符*将在下一章中进行详细讲解。代码第10行为把“圆的面积为”这段话先输出到屏幕,然后再把变量fArea的值输出到屏幕。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载