在编写程序时,需要对变量、函数、宏和其他实体进行命名。这些名字称为 标识符 (identifier)。在C语言中,标识符可以含有字母、数字和下划线,但是必须以字母或者下划线开头。[ 在C99中,标识符还可以使用某些“通用字符名”(➤25.4节)。]
下面是合法标识符的一些示例:
times10 get_next_char _done
接下来这些则是 不合法 的标识符:
10times get-next-char
不合法的原因:符号
10times
是以数字而不是以字母或下划线开头的;符号
get-next-char
包含了减号,而不是下划线。
C语言是 区分大小写 的;也就是说,在标识符中C语言区分大写字母和小写字母。例如,下列8个标识符全是不同的:
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
之类的名字更容易理解。
表2-1中的所有 关键字 (keyword)对C编译器而言都有着特殊的意义,因此这些关键字不能作为标识符来使用。注意,有些关键字是C99新增的,还有一些是C1 X 新增的。
表2-1 关键字
① 从C99开始引入。②从C11开始引入。
因为C语言是区分大小写的,所以程序中出现的关键字必须严格按照表2-1所示的那样采用小写字母。标准库中函数(如
printf
)的名字也只能包含小写字母。某些可怜的程序员用大写字母输入了整个程序,结果发现编译器不能识别关键字和库函数的调用。应该避免这类情况发生。
请注意有关标识符的其他限制。某些编译器把特定的标识符(如
asm
)视为附加关键字。属于标准库的标识符也是受限的(➤21.1节)。误用这些名字可能会导致编译或链接出错。以下划线开头的标识符也是受限的。