标识符
是用来标识数据类型
、变量名
、变量名
、函数名
、宏
的有效字符序列。
C
语言中的标识符
具有如下特点:
对编译器
来说,已经表示了特殊含义的标识符
,就是关键字
。
C90 | 规定了32 个 | signed 、unsigned 、char 、short 、int 、long 、float 、double 、struct 、enum 、union 、typedef 、void 、const 、volatile 、register 、auto 、extern 、static 、if 、else 、for 、while 、do 、switch 、case 、default 、break 、continue 、return 、sizeof 、goto |
C99 | 新增了5 个 | inline 、restrict 、_Bool 、_Complex 、_Imaginary |
C11 | 新增了7 个 | _Alignas 、_Alignof 、_Atomic 、_Static_assert 、_Noreturn 、_Thread_local 、_Generic |
注意:bool
、boolean
等不是C
语言的关键字
。
保留字
(Reserved Words)一般是等同于关键字
(Keywords)的。保留字是语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。而关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如goto,它可能未来要增加直接跳转的功能,那么为了使当前版本的程序代码能向后兼容,所以不允许使用goto作为变量名,但当前版本的语言并不支持goto的直接跳转功能,它目前就不是关键字。
用户自定义标识符
是用户自己定义的符合标识符规则的标识符。
用户自定义标识符
不能与关键字
和保留字
相同。
用户可以定义:变量、宏、函数、类型等。
示例:
#define AVERAGE(low,high) ((low + high) / 2)
int average(int low, int high);
int low = 2;
int high = 5;
typedef char* String
上面的AVERAGE
、average
、low
、high
、String
等都是我们自己定义的标识符
。