在 C 语言中,标识符(Identifier)是指用来给变量、函数、数组、结构体等命名的符号。简单来说,它就是你给代码里的各种“对象”起的名字。
一、 核心语法规则
1. 三可以(允许的组成成分)
- 只能由字母(
A-Z,a-z)、数字(0-9)和下划线(_)这三种字符组成。 - 允许大小写字母混用,但 C 语言是严格区分大小写的。例如:
Age、age和AGE是三个完全不同的标识符。
2. 三不可以(绝对禁止的规则)
- 数字绝对不能作为开头。
例如:
2b、777_num都是非法的。 - 绝对不能包含其他特殊字符。
例如空格、标点符号、减号(
-)、美元符号($)等。my name(带空格)或a-b(带减号)都是非法的。 - 绝对不能使用 C 语言的关键字(保留字)。
例如:
int、if、for、return、struct等已经被系统赋予了特定含义的单词,不能用来当名字。
二、 合法与非法对比示例
| 标识符 | 是否合法 | 原因 |
|---|---|---|
score | 合法 | 全字母,标准命名 |
_total | 合法 | 下划线开头是允许的 |
student_1 | 合法 | 包含字母、下划线和数字,且数字不在开头 |
MAX_VALUE | 合法 | 全大写,常用于宏定义 |
3rd_place | ❌ 非法 | 以数字开头 |
user-name | ❌ 非法 | 包含了非法字符 -(会被误认为减号) |
float | ❌ 非法 | 它是 C 语言的关键字 |
money$ | ❌ 非法 | 包含了非法字符 $ |
三、 行业规范
- 见名知意:尽量用有意义的英文单词(或缩写)命名,比如用
sum表示总和,用count表示计数。避免使用a,b,c1,c2这种毫无意义的字符。 - 下划线开头的风险:虽然语法允许下划线(如
_init)或双下划线(如__test)开头,但不推荐初学者这样写。因为 C 语言的底层标准库和编译器常常用下划线开头的标识符作为内部变量名,自己写容易引发命名冲突。 - 长度限制:虽然现在的编译器对标识符长度限制很宽松,但在 C 语言早期标准中,编译器只识别前 31 个字符。为了代码的兼容性和可读性,名字不宜过长。
- 命名风格统一:
- 驼峰命名法:
studentAge(常用于变量名、函数名) - 下划线命名法:
student_age(常用于变量名、函数名) - 全大写加下划线:
MAX_LENGTH(专用于常量和宏定义)
- 驼峰命名法: