C 语言中的标识符

目录汇总:C 语言入门教程:面向萌新小白的零基础入门教程

在编写程序时,需要对变量、函数、宏和其他实体进行命名。这些名字称为标识符(identifier)。在 C 语言中,标识符可以含有字母、数字和下划线,但是必须以字母或者下划线开头。(在 C99 中,标识符还可以使用某些“通用字符名”。)

下面是合法标识符的一些示例:

times10  get_next_char  _done

接下来这些则是不合法的标识符:

10times  get-next-char

不合法的原因是:符号 10times 是以数字而不是以字母或下划线开头的;符号 get-next-char 包含了减号,而不是下划线。

C 语言是区分大小写的;也就是说,在标识符中 C 语言区别大写字母和小写字母。例如,下列标识符全是不同的:

job  joB  jOb  jOB  Job JoB JOb JOB

上述 8 个标识符可以同时使用,且每一个都有完全不同的意义。(看起来使人困惑!)除非标识符之间存在某种关联,否则明智的程序员会尽量使标识符看起来各不相同。

因为 C 语言是区分大小写的,许多程序员都会遵循在标识符中只使用小写字母的规范(宏命名除外)。为了使名字清晰,必要时还会插入下划线:

symbol_table  current_page  name_and_address

而另外一些程序员则避免使用下划线,他们的方法是把标识符中的每个单词用大写字母开头:

symbolTable  currentPage  nameAndAddress

(第一个字母有时候也用大写。)前一种风格在传统 C 中很常见,但现在后面的风格更流行一些,这主要归功于它在 Java 和 C#(以及 C++)中的广泛使用。当然还存在其他一些合理的规范,只要保证整个程序中对同一标识符按照同一种方式使用大写字母就行。

C 对标识符的最大长度没有限制,所以不用担心使用较长的描述性名字。诸如 current_page 这样的名字比 cp 之类的名字更容易理解。

关键字

表 1 中的所有关键字(keyword)对 C 编译器而言都有着特殊的意义,因此这些关键字不能作为标识符来使用。K&R C 给出了 7 个与类型相关的关键字。C90 标准添加了 2 个关键字,C99 标准又添加了 3 个关键字。

表 1 关键字

最初K&R给出的关键字 C90标准添加的关键字 C99标准添加的关键字
int signed _Bool
long void _Complex
short _Imaginary
unsigned
char
float
double

因为 C 语言是区分大小写的,所以程序中出现的关键字必须严格按照表 1 所示的格式全部采用小写字母。(C99 关键字 _Bool_Complex_Imaginary 例外。)标准库中函数(如 printf)的名字也只能包含小写字母。某些可怜的程序员用大写字母录入了整个程序,结果却发现编译器不能识别关键字和库函数的调用。应该避免这类情况发生。

请注意有关标识符的其他限制。某些编译器把特定的标识符(如 asm)视为附加关键字。属于标准库的标识符也是受限的。误用这些名字可能会导致编译或链接出错。以下划线开头的标识符也是受限的。

(完)

comments powered by Disqus