CC++ & Algorithm

C++标识符与关键字

简单35
语言版本:C++Python
概述:标识符是程序员给变量、函数等取的名字,关键字是C++保留的有特殊含义的单词,不能用来做名字。

给你的代码起个好名字:C++标识符与关键字

当你开始写C++程序时,会发现要给很多东西取名字:比如存放数字的盒子(变量)、执行任务的指令块(函数)、不会改变的值(常量)……这些我们程序员自己起的名字,统称为标识符。就像每个同学都有自己独特的名字,程序里的每个东西也需要一个名字,好让电脑分清谁是谁。

但是,C++这门语言自己已经“内定”了一些特殊单词,比如 intifreturn 等,这些叫关键字。它们就像学校里的“官方用语”,老师点名时用的“张三”、“李四”可以随便叫,但“校长”、“主任”这些职位称呼可不能随便用在学生名字里。关键字已经被C++自己占用了,你不能再用它们做标识符,否则电脑会糊涂:你到底是想定义一个新变量,还是想使用语言内置的功能?


标识符的命名规则(给变量起名的“家规”)

就像你家有家规一样,C++也给标识符定了几条规矩,违反了电脑会报错。

1. 只能包含三类字符:字母、数字、下划线

允许用的字符是:大小写英文字母(A-Z a-z)、数字(0-9)和下划线 _。其他字符如空格、@、-、$、中文等都不行。

生活例子:身份证号码只能由数字和X组成,不能有笑脸符号。变量名也一样,只能用这三类字符。

合法scoremyName_countplayer1MAX_VALUE
非法my-name(有连字符)、hello world(有空格)、student@age(有@)

2. 第一个字符不能是数字

数字只能出现在名字的中间或末尾,但不能打头。

生活例子:电话号码可以以1开头,但人名如果叫“2狗”就很奇怪。变量名 2nd 是错的,必须改成 secondrank2

合法num1_2nda123
非法2nd123abc1stPlace

3. 区分大小写

ageAge两个不同的名字。比如你定义了一个变量 age 存年龄,又定义了一个 Age 存比萨斜塔的倾斜角度,电脑会认为它们互不相干。

生活例子:班里有两个同学,一个叫“小明”,一个叫“小ME”,虽然发音像,但老师点名时是两个人。所以 totalScoretotalscore 也不是同一个变量。

4. 不能使用C++的关键字

关键字是C++自己保留的特殊单词,比如 intifreturn。你不能给变量起名叫 int,否则编译器会懵逼:你这行代码到底是声明一个整数类型,还是使用一个叫 int 的变量?

生活例子:同桌叫“老师”,你在教室大喊“老师”,老师和同学都会回头,谁也不知道你在叫谁。程序里也一样,关键字有固定含义,不能当普通名字用。


什么是关键字?常用关键字一览

关键字(也叫保留字)是C++语言规定好的、有特殊用途的单词。它们已经“名花有主”,你不能拿来当变量名、函数名。

常用的关键字有这些(按用途分组,方便记忆):

类型相关控制流程其他
intifreturn
floatelseconst
doublewhiletrue
charforfalse
boolswitchvoid
shortcasesizeof
longbreaktypedef
signedcontinueusing
unsigneddonamespace

完整的C++关键字表有几十个,但现阶段你只要记住最常用的那几个,特别是 intfloatifreturn 等,千万别拿它们当变量名。


起个好名字很重要:从“路人甲”到“明星”

虽然你可以给变量起名叫 abc,就像给同学都起名叫“小王”、“小李”一样,名字短小但含义模糊。当程序只有三行时还好,一旦代码变长(比如几百行),你看自己写的代码都会头晕:a 到底是年龄还是苹果数量?b 是单价还是总价?这时候,有意义的名字就像给每个同学起了明确的昵称,一看就懂。

命名最佳实践

  • 用有意义的英文单词或缩写,比如 studentAge(学生年龄)、totalScore(总分)、appleCount(苹果个数)。
  • 常用两种风格:
    • 驼峰命名法:第一个单词小写,后面单词首字母大写,如 myNameclassRoomNumber
    • 下划线命名法:单词之间用下划线,如 my_nameclass_room_number
  • 变量名不要太长(比如 theNumberOfApplesThatIHaveBoughtYesterday)也别太短(单字母只在循环计数器等明确场合用,如 ij)。

新手常犯的错误(避坑指南)

  1. 关键字当变量名

    int int = 10;            // 错误!int 是关键字
    float return = 3.14;      // 错误!return 是关键字
    

    编译器会报错,提示你用了一个保留字。

  2. 数字开头

    int 1stPlace = 5;         // 错误!数字1开头
    
  3. 用了非法字符

    int my-var = 10;          // 错误!连字符 - 不允许
    float student's score;    // 错误!单引号和空格都不行
    
  4. 大小写混淆(不是语法错误,但容易让人困惑)

    int total = 100;
    cout << Total;           // 错误!Total 未定义,因为变量是 total
    
  5. 名字太随意(虽然能运行,但可读性差)

    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,但没人知道它代表什么。这就是好名字和坏名字的差距。


相关指引:继续学习的方向

现在你已经知道如何给变量起正确的名字,也认识了一些关键字。接下来可以学习:

  • 变量与类型intfloatdoublecharbool 等数据类型的具体用法。
  • 常量与const:如何用 const 关键字定义不会改变的值(如圆周长率 3.14159)。
  • 命名规范:驼峰命名法、下划线命名法、全大写常量的惯例(如 MAX_SCORE)。
  • 作用域:变量在程序中的“活动范围”,同名变量在不同作用域中可能相互不影响。

记住:一个清晰的名字,能让你的代码像读故事一样流畅,而好的开始就是记住“关键字不能当名字,规则要遵守,名字要有意义”。加油,小程序员!

例题精讲

1单选题

下列哪个是合法的C++标识符?

A2num
Bint
Cmy_var
Dfloat-value
2判断题

C++中,关键字可以当作用户标识符使用。

3填空题
以下代码中,需要声明一个整型变量并初始化为100,请填入一个合法的标识符(不得使用关键字)。
int ___ = 100;
4单选题

以下哪个是C++关键字?

Ainclude
Bmain
Cprintf
Dtypedef
5判断题

C++标识符中可以包含下划线,例如 _myVar 是一个合法的标识符。