c 语言标识符的命名规则 合法命名规范
c 语言标识符的命名规则是给变量 函数 数组 结构体 宏等自定义名称制定的语法硬性要求,只有符合这套规则,编译器才可以正常识别这个名称,违反规则的名称会直接编译报错,标识符本质就是程序员自己起的名字,用来标记程序里面各类元素。规则核心要点是标识符只能由英文字母 下划线 数字这三类字符组成,第一个字符必须是英文字母或者下划线,不能以数字开头,同时不能使用 c 语言已经保留的关键字,比如 int if while for 这些关键字本身有固定语法含义,不能拿来当做自定义标识符,另外 c 语言区分大小写,大写字母和小写字母属于不同标识符,Sum 和 sum 是两个完全独立的名字,这点很多新手容易忽略。除了语法强制规则之外,还有工程编码风格规范,虽然风格规范不属于编译器强制要求,但是团队开发都会遵守,目的是提升代码可读性,比如见名知意,不使用无意义单字母长串,区分驼峰或者下划线命名风格,语法规则是底线,风格规范是优化,二者不要混淆。
语法强制规则清单
组成字符 只允许英文字母大小写 下划线 阿拉伯数字
首字符限制 首字符必须是字母或者下划线,数字不能放在第一位
关键字限制 不能使用 c 语言关键字作为标识符
大小写 区分大小写,大小写不同就是不同标识符
长度 编译器一般支持识别前面部分字符,过长名称可能截断,不建议名称过长
关键字说明
关键字是 c 语言预定义保留单词,自带固定语法功能,例如 int char void return if else while switch for break continue 等,这些单词已经被编译器占用,不允许拿来命名变量或者函数,就算大小写修改之后不再是关键字,虽然语法可以通过,但是不推荐,容易降低代码可读性。
合法与非法示例对照表格
名称示例 是否合法 原因
num 合法 字母开头,仅字母组成
_score 合法 下划线开头,字符合规
123num 非法 数字作为首字符
int 非法 属于 c 语言关键字
a b 非法 中间带有空格,空格不属于允许字符
sum123 合法 字母开头,末尾带数字
命名风格补充建议
见名知意 名称可以体现变量含义,比如 score 表示分数 count 表示计数
下划线风格 单词之间使用下划线连接,比如 student_score
驼峰风格 后面单词首字母大写,比如 studentScore
避免短名称滥用 循环临时变量可以用 i j,业务变量不要全部用 a b c
不要以下划线开头加大写,这类名称很多属于标准库内部保留名称,容易冲突
高频易错点
第一 名称里面加入减号 加号 空格等符号,这类符号不属于允许字符,编译报错
第二 直接拿关键字命名变量,编译直接报错
第三 误以为 c 语言不区分大小写,修改大小写之后认为是同一个变量,运行出现未定义错误
第四 以下划线开头的标识符,标准库会预留一部分,项目自定义尽量少用,防止和库名称冲突
第五 名称过长,部分老编译器只识别前若干个字符,两个长名称前面部分一样,会被当成同一个标识符
【常见问题】
问题 1 c 语言标识符的命名规则里面数字能不能放在开头
回答 1 c 语言标识符的命名规则明确要求首字符必须是字母或者下划线,数字不能放在标识符开头,数字只能放在名称中间或者末尾,数字开头属于非法标识符。
问题 2 c 语言标识符的命名规则里面关键字能不能当做名字
回答 1 c 语言标识符的命名规则不允许使用关键字作为自定义标识符,关键字已经被编译器预留,有固定语法含义,强行使用会触发编译错误。
问题 3 c 语言标识符的命名规则区分大小写吗
回答 1 c 语言标识符的命名规则是区分大小写的,大写和小写字母属于不同标识符,Sum sum SUM 会被编译器识别成三个独立名称。
【免责申明】
本文内容仅用于 c 语言基础知识学习参考,语法规则基于标准 C 语言规范,不同编译器可能存在扩展差异,实际项目请遵循团队编码规范,因命名错误造成编译报错或者命名冲突,相关风险由使用者自行承担。
