火星科技网您的位置:首页 >综合百科 >

c 语言标识符的命名规则 合法命名规范

导读 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 语言规范,不同编译器可能存在扩展差异,实际项目请遵循团队编码规范,因命名错误造成编译报错或者命名冲突,相关风险由使用者自行承担。