对象与变量
本节阅读量:数据和值
第1.0节「程序结构介绍」中,了解到程序中大多数指令是语句,函数是按顺序执行的语句组。语句执行生成想要的结果。
程序怎么得到结果呢?通过操纵(读取、更改和写入)数据。「数据」是计算机可移动、处理或存储的信息。
程序有多种方式获取待使用数据:文件或数据库、网络、键盘上输入或程序员直接将数据放入源代码。在上述“Hello world”程序中,文本“Hello world!”直接插入程序源代码,为程序提供数据。程序将数据发送至显示器处理。
数据以有效的处理格式存储(不可读)。编译“Hello World”程序时,文本“Hello World!”转换为程序使用的更有效的格式(二进制,将在以后的课程中讨论)。
「值」是字母(例如A)、数字(例如5)、文本(例如Hello)或其他数据值(例如分数)。
注
程序是操作数据以产生所需结果的指令集合。
对象和变量
内存,称为RAM(随机存取存储器的缩写),供程序使用。RAM被视为一系列编号的邮箱,每个邮箱在程序运行时保存一段数据。
一些较旧的编程语言(如BASIC),可直接访问这些邮箱(语句类似于「获取邮箱编号7532中的值」)。
在C++中,不鼓励直接访问内存。鼓励对象间接访问内存。对象是存储值的存储区域(通常是内存),具有其他相关属性(将在后续课程中介绍)。编译器和操作系统如何为对象分配内存超出本课程范围。这里的关键点,与其说获取存储在邮箱7532中的值,不如说获取该对象存储的值。这意味着我们可以专注于使用对象来存储和检索值,而不必担心它们在内存中的实际位置。
对象即可有名称也可无名称(匿名)。命名对象称为变量,对象名称为标识符。程序中,创建和使用的大多数对象是变量。
注
一般编程中,对象指内存中未命名对象、变量或函数。C++中,对象的定义更窄,不包括函数。
关键点
对象(和命名对象,称为变量)用于存储值。
变量实例化
为了创建变量,使用一种特殊的声明语句,称为定义(稍后澄清声明和定义之间的区别)。
下面示例,定义名为x的变量:
|
|
编译器看到语句时,就会知道,定义一个变量,命名为x,类型为int(稍后将详细介绍类型)。从这行开始(我们将在以后的课程中讨论一些限制),每当编译器看到标识符x时,它就会知道我们正在引用这个变量。
程序运行时,变量被实例化。「实例化」意味着创建对象并为其分配内存地址。变量须先实例化,才能用于存储值。假设变量x在内存位置140处实例化。当程序使用x时,将访问存储器位置140中的值。实例化对象有时称为实例。
数据类型
目前为止,已经讨论了变量是存储数据值的命名存储区域。数据类型(通常称为类型)告诉编译器变量将存储哪种类型的值(例如,数字、字母、文本等)。
上面例子中,变量x赋予了int类型,意味着变量x将表示一个整数值。整数是没有分数的数字,例如4、27、0、-2或-12。简而言之,x是整数变量。
C++中,变量的类型须在编译时(编译程序时)已知,不重新编译程序不能更改类型。整数变量保存整数值。如果要存储其他类型值,则需要使用不同的类型。
整数是C++默认支持类型之一。下面示例使用数据类型double定义变量:
|
|
C++允许创建自定义类型。后续会介绍,也是C++一部分强大的能力。
对于介绍性章节,将使用整数变量,它们在概念上很简单,后续也会有其他类型(包括double)。
定义多个变量
通过逗号分隔名称,能在单个语句中定义相同类型的多个变量。以下两段效果相同:
|
|
内容相同:
|
|
定义多个变量时,新手程序员会犯两个常见错误(不严重,编译器会捕获这些错误):
第一个错误,按顺序定义变量时为每个变量指定类型。
|
|
第二个错误,不允许同一语句中定义不同类型的变量。不同类型的变量须在单独语句中定义。
|
|
最佳实践
尽管允许在单个语句中定义相同类型的多个变量,但请避免这样写。在每行单独语句中定义每个变量(使用单行注释来记录用途)。
总结
C++中,使用变量访问内存。变量有一个标识符、一个类型和一个值(以及这里不相关的一些其他属性)。变量的类型用于如何解释内存中的值。
下一课,将学习如何为变量赋值,以及如何实际使用它。
