auto:声明自动变量;break:跳出当前循环;case:开关语句分支;char:声明字符型变量或函数返回值类型;const:声明只读变量;continue:结束当前循环,开始下一轮循环;default:开关语句中的“默认分支”;do:循环语句的循环体;double:声明双精度浮点型变量或函数返回值类型;else:条件语句否定分支(与if连用);enum:声明枚举类型;extern:声明变量或函数是在其它文件或本文件的其它位置定义;float:声明浮点型变量或函数返回值类型;for:一种循环语句;goto:无条件跳转语句;if:条件语句;int:声明整型变量或函数;long:声明长整型变量或函数返回值类型register:声明寄存器变量;return:子程序返回语句(可以带参数,也可不带参数)short:声明短整型变量或函数;signed:声明有符号类型变量或函数;sizeof:计算数据类型或变量长度(即所占字节数)static:声明静态变量;struct:声明结构体类型;switch:用于开关语句;typedef:用以给数据类型取别名;unsigned:声明无符号类型变量或函数;union:声明共用体类型;void:声明函数无返回值或无参数,声明无类型指针;volatile:说明变量在程序执行中可被隐含地改变;while:循环语句的循环条件。
1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字。
inline:用来定义一个类的内联函数,引入它的主要原因是用它代替C中表达式形式的宏定义;restrict:只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。即所有修改该指针指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改,这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码;_Bool:布尔类型的数据,其值为0或1,主要用来判断条件能否成立的真假;_Complex:用来表示复数类型;_Imaginary:用来表示虚数类型。
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字。
_Alignas:指定某个变量按照其他数据类型对齐;_Alignof:指定数据类型内存对齐的字节数;_Atomic:原子类型说明符和限定符;_Static_assert:声明在编译时有效,它将测试由用户指定且可以转换为布尔值的整数表达式表示的软件断言。如果表达式的计算结果为零(false),编译器将发出用户指定的消息,并且编译因错误而失败;_Noreturn:表明调用完成后的函数不返回主调函数,目的是告诉用户和编译器,这个特殊的函数不会把控制返回主调程序,告诉用于以免滥用该函数,通知编译器可以优化一些代码。_Thread_local:它会影响变量的存储周期,被修饰的变量具有线程周期,这些变量在线程开始的时候被生成,在线程结束的时候被销毁。并且每一个线程都拥有一个独立的变量实例。可以和static和extern关键字联合使用,这将影响变量的链接属性;_Generic:可以简单地将一组具有不同类型却有相同功能的函数抽象为一个统一的接口。
用来描述变量名、函数名等一些自定义的符号,C语言中的标识符的命名规范需要遵循如下规范——
所有标识符必须由字母或下划线开头,而不能使用数字或符号作为开头;在设定标识符时,除开头外,其它位置都可以由字母、下划线或数字组成;英文字母的大小写代表不同的标识符,也就是说,在C语言中是区分大小写字母的;标识符不能是关键字;标识符命名最好具有相关的含义,将标识符设定成有一定含义的名称,这样可以方便程序的编写,具有含义的标识符使得程序编译观察、阅读;ANSI标准规定,标识符可以任意长度,但外部名必须至少能由前8个字符唯一地区别。这是因为某些编译程序仅能识别前8个字符。