我的第一本C++书

游历C++世界的地图

#

fo循环控制结构中的更改语句

3. 更改语句

在各种循环结构中,总是有一个循环控制变量用来构成循环是否继续执行的条件。例如前面例子中的nInout就是一个循环控制变量,可以用它的值来判断是否需要进行下一次的循环。既然是表示循环的条件,就需要在循环中对这个变量进行修改,以反映循环的执行情况,根据执行情况决定循环是否继续进行。例如将用户输入的值赋值给nInput,就是对循环控制变量的修改。for循环是将循环控制变量的修改独立出来放到了更改语句中来进行。

在理解了for循环的三个要素之后,再来理解for循环的执行流程就比较清楚了。程序进入for循环语句之后,首先会执行初始化语句,完成必要的初始化工作。然后再计算条件表达式的值,如果条件表达式的值为true,则执行循环体语句,再执行更改语句,修改循环控制变量。接着又开始计算条件表达式的值,根据其值决定是否需要继续下一次循环:如果条件表达式的值为true,则继续下一次循环;反之,则结束整个循环的执行。for循环控制结构的执行流程如图4-5所示。

clip_image002

图4-5 for循环的执行流程

posted @ 2011-07-19 11:37 陈良乔——《我的第一本C++书》 阅读(1282) | 评论 (0)编辑 收藏

《我的第一本C++书》迷你书——看图学C++免费下载

The world is built on 了解C++.

——Herb Sutter

 

看得有趣、学得轻松

 看图也能学C++?!

没错,看图也能学C++!

这本迷你书是《我的第一本C++书》的迷你版,它抽取了《我的第一本C++书》中的全部的精美插图,并配上相应的解释说明。它以图文并茂的生动形 式,向你讲解那些所谓的高深的C++知识,让你对那些抽象的C++知识有一个更加形象的理解,向你展示这个美丽而神秘的C++世界,让你在有趣的看图过程 中,轻松地学到了C++知识。

clip_image004

看得有趣、学得轻松 

免费下载

posted @ 2011-07-18 17:13 陈良乔——《我的第一本C++书》 阅读(1581) | 评论 (3)编辑 收藏

指针的赋值和使用

更多来自:http://imcc.blogbus.com

3.9.3 指针的赋值和使用

在得到一个指针变量之后,指针变量的值还是一个随机值。这个值可能是内存中无关紧要的数据,也可能是重要的数据或者程序代码,如果直接使用是很危险的,所以在使用指针之前,必须对其进行赋值,将其指向某个有意义的数据或代码。对指针变量进行赋值的语法格式如下:

指针变量 = 内存地址;

可以看到,对指针变量的赋值,实际上就是将这个指针指向某一内存地址,而这个内存地址上存放的就是这个指针想要指向的数据。通常我们用一个变量来保存数据,那么该如何方便地得到一个变量在内存中的地址呢?反过来,如果知道一个指针,又如何取出存放在其中的数据呢?为了解决这两个问题,C++提供了两个与内存地址相关的运算符——“&”和“*”。

1. “&”运算符

“&”称为取地址运算符,如果把它放在一个变量的前面,则可以得到该变量在内存中存放的地址。例如:

// 定义一个整型变量

int N = 703;

// 取得整型变量的地址并将其赋值给整型指针

int*pN = &N;

通过“&”运算符可以取得N这个整型变量的内存地址,然后将其赋值给指针pN,也就是将指针pN指向N这个整数数据,如图3-7所示。

clip_image002

图3-7 指针和指针所指向的数据

posted @ 2011-07-17 11:11 陈良乔——《我的第一本C++书》 阅读(1938) | 评论 (0)编辑 收藏

并列的选择:switch语句

4.2.2 并列的选择:switch语句

其中,条件表达式就是要进行判断的条件。switch语句首先计算条件表达式的值,这个表达式的值只能是整型或字符型。完成这个表达式的计算之后,程序开始在各个“case”分支中从上到下逐个匹配,查找哪个常量值和这个表达式的值相等。如果找到相等的常量表达式,则以此为入口开始往下顺序执行case分支中的语句,直到遇到break关键字,完成整个switch语句的执行。如果查找所有case分支都没有找到相等的常量表达式,则进入表示默认情况的default分支开始执行,最终完成整个switch语句。default关键字是可选的,如果没有default关键字,在程序找不到匹配的case分支后,则直接结束switch条件选择语句的执行,如图4-2所示。

clip_image002

图4-2 switch语句的执行流程

posted @ 2011-07-16 09:56 陈良乔——《我的第一本C++书》 阅读(1126) | 评论 (2)编辑 收藏

指针的本质:表示内存地址的数据类型

更多来自:http://imcc.blogbus.com

3.9.1 指针的本质:表示内存地址的数据类型

在典型的32位平台上,可以把内存空间看成是由很多个连续的小房间构成的,每个房间就是一个小存储单元,大小是1个字节,房间中住着数据。有的数据比较小,比如一个char类型的字符,它只需要一个房间就够了。而有的数据比较大,就需要占用好几个房间,比如一个int类型的整数,其大小是4个字节,需要4个房间才可以安置。为了方便找到住在这些房间中的数据,房间就需要按照一定的规则编号,这个编号,就是通常所说的内存地址。这些编号是用一个32位的二进制数来编码的,比如0x7AE4074B、0xFFFFFFFF等,如图3-6所示。一旦知道某个数据的房间编号,就可以通过这个编号来对相应房间中的数据进行存取操作。C++中为了灵活地操作内存,特别内建了一种特殊的数据类型,以用来存放内存单元的地址,这就是指针。而存放在指针中的内存地址,则可能是一个对象的地址、一个整数的地址,甚至是一个函数的地址。一般来说,如果指针变量所保存的是一个对象或者函数的地址,就说这个指针指向这个对象或者函数。

clip_image002

图3-6 内存被划分为许多小的单元房间

posted @ 2011-07-15 10:36 陈良乔——《我的第一本C++书》 阅读(1412) | 评论 (0)编辑 收藏

打包复杂:结构体的定义

更多来自:http://imcc.blogbus.com

3.8.1 打包复杂:结构体的定义

其中,struct关键字表示要创建一个结构体,结构体名就是要创建的新结构体的名字,通常使用结构体描述的事物来作为结构体的名字。在结构体的内部,我们分别使用多个不同数据类型的变量来表示复杂事物的各个属性。因为这些变量共同组成了结构体,所以这些变量称为结构体的成员变量。有了结构体,就可以在结构体中定义多个不同类型的成员变量,从各个属性来描述一个复杂的事物。例如,可以这样来定义描述人这个复杂事物的结构体:

// 定义结构体Human描述人这个复杂事物

struct Human

{

string m_strName; // 姓名

bool m_bMale; // 性别

int m_nAge; // 年龄

int m_nHeight; // 身高

float m_fWeight; // 体重

};

以前是用各个基本数据类型的变量来分别描述一个复杂事物的各个属性。这里是将变量集合在一起,打包成一个结构体,如图3-5所示。有了结构体,就可以定义一个统一的结构体变量来描述一个具体的复杂事物,代替原来定义多个变量描述同一个事物。例如:

// 定义一个Human结构体变量描述“陈良乔”这个人

// 这个结构体包含了他的姓名、性别和年龄等信息

Human chenliangqiao;

clip_image002

图3-5 将复杂事物打包成结构体

posted @ 2011-07-14 10:36 陈良乔——《我的第一本C++书》 阅读(1522) | 评论 (7)编辑 收藏

排排坐,吃果果:数组的声明与初始化

更多来自:http://imcc.blogbus.com

3.6.1 排排坐,吃果果:数组的声明与初始化

我们常常遇到这样的数据:数量很大;有相同的数据类型;有相同的处理方式。例如,一个公司所有员工的工资、一个学校所有学生的成绩、一个地区一年的气温,等等。为了描述这种量大且相似的数据,C++提供了数组这种构造型数据类型。

如果把整个内存看成是一座宾馆,那么可以把数组看成是某一层楼上的一个个连续的小房间。这些小房间具有相同的容量,可以存放相同数据类型的数据。当然,房间容量的不同或者连续房间个数的不同,可以在内存中形成不同的数组,如图3-2所示。

clip_image002clip_image004

图3-2 数组就是内存中的多个小房间

posted @ 2011-07-13 12:05 陈良乔——《我的第一本C++书》 阅读(1274) | 评论 (10)编辑 收藏

C++世界众生相

更多来自:http://imcc.blogbus.com

第3章

Ÿ C++世界众生相clip_image001

在听过了HelloWorld.exe的自我介绍,完成了与C++的第一次亲密接触后,大家是不是都急不可待地想要一试身手,开始编写C++程序了呢?

我们知道,程序首先是使用数据来描述现实世界的。当我们尝试使用数据来描述现实世界时,马上就遇到了一个问题:C++世界中的数据这么多,我们一个都不认识,该从哪里开始啊?别着急,现在我就来为你们介绍C++世界的芸芸众生:基本数据类型。clip_image003

3.1 百家姓:C++中的数据类型

我们知道,编程是使用程序设计语言来描述和表达现实世界的。现实世界中有很多客观存在的事物,例如数字、人、车辆等。很多数据是同一类的,比如人的名字,都是由文字构成的;人的身高,都是由数字组成的。在程序设计语言中,我们将这些相同类型的数据抽象成数据结构。数据结构是对现实世界中的同类数据的描述,我们把它也称为数据类型。这就像现实世界中人的姓氏一样,同一个姓氏的人是一家人。在C++世界中,同样数据类型的数据是同一个类别的,也有着相同的一些特征。为了描述现实世界中丰富多样的事物,通常将这些事物定义成具体的数据,而数据类型则是这些事物的种类。数据类型就像C++世界的百家姓,一个数据的数据类型,决定了这个数据是哪一家的人,如图3-1所示。

clip_image005

图3-1 C++的和谐大家庭

posted @ 2011-07-12 10:03 陈良乔——《我的第一本C++书》 阅读(1095) | 评论 (0)编辑 收藏

C++程序读写文件

更多来自:http://imcc.blogbus.com

2.2.3 读写文件

在这段程序中,我们首先创建了一个输入文件流ifstream的对象fin,并利用它的构造函数将其连接到一个文本文件Date.txt。所谓构造函数,就是这个对象创建的时候所执行的函数。这里,我们使用“Date.txt”作为参数来调用这个构造函数,实际上就是使用这个文件创建fin对象。除此之外,我们还可以使用fin所提供的open()函数来打开一个文件。当我们利用fin成功打开一个文件之后,就可以利用提取符“>>”从fin中提取各种数据。“>>”会以空格为分隔符逐个从文件中读取数据并将其保存到相应的数据变量中。例如,如果文件中的内容如下:

用户输入的当前日期是:

1983 7 3

默认情况下,fin总是从文件的开始部分进行读取的,为了直接读取第二行的内容,我们使用“fin.ignore(256,'\n');”忽略了第一行的内容,将读取位置跳转到第二行。然后,通过提取符“>>”,我们将第二行用空格分割的三个数据分别提取并保存到了三个变量中。

同样,为了将数据写入文件,我们需要创建一个输出文件流ofstream的对象fout,然后通过它的构造函数或者是open()函数来打开一个文件,将这个文件和fout对象连接起来,然后通过插入符“<<”将数据插入到fout对象,也就实现了将数据写入到它所关联的文件中的目的。整个过程如下图2-9所示:

clip_image002

图2-9 文件读写

posted @ 2011-07-11 09:43 陈良乔——《我的第一本C++书》 阅读(2097) | 评论 (2)编辑 收藏

我的人生目的:描述数据与处理数据

更多来自:http://imcc.blogbus.com

2.1.6 我的人生目的:描述数据与处理数据

每个人都会问自己人生的目的是什么?我的人生目的是什么?人们编写程序的目的,是为了用程序解决现实世界中的问题。人们观察发现,这些问题都是以数据作为输入,然后对这些数据进行处理,最后得到问题的结论。所以,我人生的目的是描述数据并处理数据,最终解决现实世界的问题,如图2-8所示。

clip_image002

图2-8 我的人生目的

posted @ 2011-07-10 09:14 陈良乔——《我的第一本C++书》 阅读(906) | 评论 (0)编辑 收藏

仅列出标题
共4页: 1 2 3 4