C++标识符与关键字
简单35给你的代码起个好名字:C++标识符与关键字
当你开始写C++程序时,会发现要给很多东西取名字:比如存放数字的盒子(变量)、执行任务的指令块(函数)、不会改变的值(常量)……这些我们程序员自己起的名字,统称为标识符。就像每个同学都有自己独特的名字,程序里的每个东西也需要一个名字,好让电脑分清谁是谁。
但是,C++这门语言自己已经“内定”了一些特殊单词,比如 int、if、return 等,这些叫关键字。它们就像学校里的“官方用语”,老师点名时用的“张三”、“李四”可以随便叫,但“校长”、“主任”这些职位称呼可不能随便用在学生名字里。关键字已经被C++自己占用了,你不能再用它们做标识符,否则电脑会糊涂:你到底是想定义一个新变量,还是想使用语言内置的功能?
标识符的命名规则(给变量起名的“家规”)
就像你家有家规一样,C++也给标识符定了几条规矩,违反了电脑会报错。
1. 只能包含三类字符:字母、数字、下划线
允许用的字符是:大小写英文字母(A-Z a-z)、数字(0-9)和下划线 _。其他字符如空格、@、-、$、中文等都不行。
生活例子:身份证号码只能由数字和X组成,不能有笑脸符号。变量名也一样,只能用这三类字符。
合法:score、myName、_count、player1、MAX_VALUE
非法:my-name(有连字符)、hello world(有空格)、student@age(有@)
2. 第一个字符不能是数字
数字只能出现在名字的中间或末尾,但不能打头。
生活例子:电话号码可以以1开头,但人名如果叫“2狗”就很奇怪。变量名 2nd 是错的,必须改成 second 或 rank2。
合法:num1、_2nd、a123
非法:2nd、123abc、1stPlace
3. 区分大小写
age 和 Age 是两个不同的名字。比如你定义了一个变量 age 存年龄,又定义了一个 Age 存比萨斜塔的倾斜角度,电脑会认为它们互不相干。
生活例子:班里有两个同学,一个叫“小明”,一个叫“小ME”,虽然发音像,但老师点名时是两个人。所以 totalScore 和 totalscore 也不是同一个变量。
4. 不能使用C++的关键字
关键字是C++自己保留的特殊单词,比如 int、if、return。你不能给变量起名叫 int,否则编译器会懵逼:你这行代码到底是声明一个整数类型,还是使用一个叫 int 的变量?
生活例子:同桌叫“老师”,你在教室大喊“老师”,老师和同学都会回头,谁也不知道你在叫谁。程序里也一样,关键字有固定含义,不能当普通名字用。
什么是关键字?常用关键字一览
关键字(也叫保留字)是C++语言规定好的、有特殊用途的单词。它们已经“名花有主”,你不能拿来当变量名、函数名。
常用的关键字有这些(按用途分组,方便记忆):
| 类型相关 | 控制流程 | 其他 |
|---|---|---|
int | if | return |
float | else | const |
double | while | true |
char | for | false |
bool | switch | void |
short | case | sizeof |
long | break | typedef |
signed | continue | using |
unsigned | do | namespace |
完整的C++关键字表有几十个,但现阶段你只要记住最常用的那几个,特别是 int、float、if、return 等,千万别拿它们当变量名。
起个好名字很重要:从“路人甲”到“明星”
虽然你可以给变量起名叫 a、b、c,就像给同学都起名叫“小王”、“小李”一样,名字短小但含义模糊。当程序只有三行时还好,一旦代码变长(比如几百行),你看自己写的代码都会头晕:a 到底是年龄还是苹果数量?b 是单价还是总价?这时候,有意义的名字就像给每个同学起了明确的昵称,一看就懂。
命名最佳实践:
- 用有意义的英文单词或缩写,比如
studentAge(学生年龄)、totalScore(总分)、appleCount(苹果个数)。 - 常用两种风格:
- 驼峰命名法:第一个单词小写,后面单词首字母大写,如
myName、classRoomNumber。 - 下划线命名法:单词之间用下划线,如
my_name、class_room_number。
- 驼峰命名法:第一个单词小写,后面单词首字母大写,如
- 变量名不要太长(比如
theNumberOfApplesThatIHaveBoughtYesterday)也别太短(单字母只在循环计数器等明确场合用,如i、j)。
新手常犯的错误(避坑指南)
-
关键字当变量名
int int = 10; // 错误!int 是关键字 float return = 3.14; // 错误!return 是关键字编译器会报错,提示你用了一个保留字。
-
数字开头
int 1stPlace = 5; // 错误!数字1开头 -
用了非法字符
int my-var = 10; // 错误!连字符 - 不允许 float student's score; // 错误!单引号和空格都不行 -
大小写混淆(不是语法错误,但容易让人困惑)
int total = 100; cout << Total; // 错误!Total 未定义,因为变量是 total -
名字太随意(虽然能运行,但可读性差)
int a = 5; // 是年龄?是数量?猜不到
完整示例:好名字 vs 坏名字 + 关键字错误演示
下面这个程序展示了好名字和坏名字的区别,以及错误的关键字用法(注释中有错误代码,运行时请注释掉)。
#include <iostream>
using namespace std;
int main() {
// ---------- 好名字:一眼就懂 ----------
int appleCount = 10; // 苹果个数
double pricePerApple = 2.5; // 每个苹果的价格(元)
double totalCost = appleCount * pricePerApple; // 总价
cout << "总价:" << totalCost << "元" << endl;
// ---------- 坏名字:猜猜什么意思 ----------
int a = 10; // 是苹果个数?还是学生人数?
double x = 2.5; // 是单价?还是税率?
double y = a * x; // 是总价?还是距离?
cout << y << endl; // 输出谜之数字
// ---------- 下面的代码会报错!因为用了关键字做变量名 ----------
// int if = 100; // 错误!if 是关键字
// float return = 3.14; // 错误!return 是关键字
// 请把上面两行注释掉,否则程序无法运行。
return 0;
}
运行这个程序,你会看到两行输出:
总价:25元
25
第一行清楚明了,第二行只输出数字25,但没人知道它代表什么。这就是好名字和坏名字的差距。
相关指引:继续学习的方向
现在你已经知道如何给变量起正确的名字,也认识了一些关键字。接下来可以学习:
- 变量与类型:
int、float、double、char、bool等数据类型的具体用法。 - 常量与
const:如何用const关键字定义不会改变的值(如圆周长率3.14159)。 - 命名规范:驼峰命名法、下划线命名法、全大写常量的惯例(如
MAX_SCORE)。 - 作用域:变量在程序中的“活动范围”,同名变量在不同作用域中可能相互不影响。
记住:一个清晰的名字,能让你的代码像读故事一样流畅,而好的开始就是记住“关键字不能当名字,规则要遵守,名字要有意义”。加油,小程序员!
例题精讲
下列哪个是合法的C++标识符?
C++中,关键字可以当作用户标识符使用。
以下代码中,需要声明一个整型变量并初始化为100,请填入一个合法的标识符(不得使用关键字)。
int ___ = 100;以下哪个是C++关键字?
C++标识符中可以包含下划线,例如 _myVar 是一个合法的标识符。