
一起动脑筋 · 先看一个小故事
女孩给机器人记分,刚得 3 分,又得 2 分。如果纸上只留一个“当前分数”格子,该怎么更新?
把过程摊开来看
- 建立score 保存 3
- 读取取出当前的 3
- 计算3 加 2 得 5
- 更新score 保存 5
变量让程序用一个名字保存和访问数据。盒子比喻帮助我们看清“名字”和“当前值”是两回事。
score 可以一直叫 score,里面的数却从 3 变成 5。
01变量到底是什么?
在程序里,我们常常需要暂时记住一个数、一个字符或一个真假状态。
例如:玩家的分数、商品数量、年龄、是否通关……这些数据都可能在程序运行过程中变化。
变量(Variable)可以理解成:程序中有名字、可以保存某个值的数据对象。
名字
例如 score,方便程序找到它。
类型
例如 int,告诉程序它能保存什么数据。
值
例如 95,是当前保存的数据。
02怎样创建一个变量?
在 C++ 中,最简单的变量声明可以这样写:
int score;
int 表示变量的类型,score 是变量名。
如果一开始就给它一个值,可以写:
int score = 95;03为什么变量需要名字?
名字让程序员能清楚地表达“这个数据是什么”。
不好的名字
a、x1 —— 看不出用途。
更清楚的名字
score、age、studentCount
变量名不是给 CPU “看懂含义”的,它主要帮助人编写和维护程序;编译后,名称可能不再以原样存在于机器代码中。
04变量的值为什么会变化?
变量之所以叫“变量”,就是因为它保存的值在允许的情况下可以改变。
int score = 10;
score = 20;
score = score + 5;
执行完以后,score 的值是 25。
05所有数据都要放进变量吗?
不一定。程序中还有常量、字面量、表达式结果、对象、数组元素等各种形式的数据。
变量只是我们保存和操作数据时最常用的工具之一。
std::cout << 100;
这里的 100 是整数字面量,并没有先放进一个变量。
06变量什么时候存在?
变量不是“从程序出生到程序结束都一直存在”。不同变量有不同的生命周期。
例如写在函数内部的局部变量,通常在执行进入它的作用域时开始存在,在离开作用域后结束生命周期。
你已经知道了什么
- 变量是程序中有名字、能保存值的数据对象。
- 变量通常有名字、类型和值。
- “小盒子”可以帮助入门,但变量并不是真实盒子。
=在 C++ 中常表示赋值,不是数学意义上的等号。- 变量有生命周期,并不是永远存在。
下一篇:变量在内存里住在哪里?
轮到你来试一试
把 score 改成 5 后,读取 score 会同时得到 3 和 5 吗?
想好了吗?点开看解释
不会,这个普通整数变量当前保存的是 5。若要保留历史分数,需要另外保存旧值。