C语言关键字

C语言关键字

关键字(保留字)包括C90,C99,C11新添加的关键词汇,关键字不可以作为标识符使用,许多关键字用于指定不同类型。如果关键字使用不当,将不会被编译器识别。保留标识符已经被指定了它们的用途和特性,以及使用权。如果使用保留标识符表达其他意思时编译器虽然可以识别,不会引发错误,但是有些时候还是会出现一些问题,尽量避免使用。保留标识符包括_下划线开头的字符和标准库函数名。


auto
_Alignas
_Alignof
_Atomic

auto:声明自动变量,C语言中最常见存储关键词,在不定义存储关键词时编辑器自动定义为auto关键词。并且不会在代码行中显示。仅在语句内使用。

_Alignas:设置对象的对齐指定符

_Alignof:查询其操作数类型的对齐要求

_Atomic:原子类型限定符与说明符



break
_Bool

 

break:结束循环语句与跳出switch结构。在某些程序调试时被设置为断点,break语句对if-else的条件语句不起作用。在多层循环中,一个break语句只向外跳一层。

_Bool:布尔类型声明。只有0和1两个值,可作为宏 true 与 false使用。


case
char
_Complex
const
continue

 

case:开关语句的分支标记。与switch配合使用,通常在每个case结尾处加入break,不然将自动执行下一个case语句。

           case后面必须是整数或常量表达式。

char:字符类型。属于整数数据的一种,在使用时只能配合单引号使用。由于在C语言中没有字符串类型,可以使用char间接代替(char*)这个编译方式在C语言中有它的语义。表示以\0为结束的字符串。

_Complex:复浮点类型的复数声明可以写成一个实数与一个实数乘虚数单位的和的数,有三种复数类型:float _Complex , double _Complex, long double _Complex 每个复数类型与拥有二个对应实数类型元素的数组相同的对象表示和对齐要求。数组第一元素保有实部,而第二个元素保有虚部。

const:类型限定符。编译器将带有const的声明放入只读内存中,使常类型,常类型的变量或对象的值不能被当前线程或进程改变。const仅应用于左值表达式中,不然将无法使用。

continue:结束当前循环,终止循环内下方未执行的语句,开启新的循环。它仅能出现在 for 、 while 及 do-while 的循环体内。


default
do
double

 

default:开关语句的分支标记。与switch配合使用。

double:双精度浮点类型。相对单精度浮点数,double使用8字节来进行存储。有效数是15-16位,

do:循环结构,与while配合使用。重复循环执行语句,当表达式为真时继续循环,表达式为假时停止,当设置某个点停止时可以使用break语句结束。


extern
enum
else

 

extern:指定变量为外部变量,以表示变量或者函数的定义在别的文件中与外部链接,能从整个程序的任何其他翻译单元指代该标识符。所有非 static 函数、所有 extern 对象(除非之前声明为 static )和所有文件作用域的非 static 对象拥有此链接。

enum:枚举类型声明,枚举类型是常量不是变量,不可以使用赋值表达式对其赋值。enum定义一组值的对象。它包含零个或多个值成员,但是不能出现相同的值和属性

else:与if配套使用,条件语句否定分支,在内侧if必须含有else。



float
for

 

float:单精度浮点类型,float使用4字节来存储,有效数为6-7位。

for:循环结构,执行循环。可以用作表达式或声明,若它是表达式,则在首次求值 条件表达式 前将它求值一次,并舍弃其结果。若它是声明,则它在整个循环体内都处于作用域内,包括 初始化子句 的剩余部分、整个条件表达式、整个 迭代表达式 及整个循环语句。声明于此声明的变量只允许有 auto 和 register 存储。条件表达式 在循环体前求值。若表达式的结果是零,则循环立即退出。迭代表达式 在循环体后求值,并舍弃其结果。求值 迭代表达式 后,将控制转移到 条件表达式,初始化子句 、 条件表达式 和 迭代表达式 都是可选的。


goto
_Generic

 

goto:无条件跳转语句,在无法用约定的构造将控制转移到所想要的位置时使用。goto在跳转到前附具名的语句时需要处于同个函数,除非此跳转会进入变长度数组或别的可变修改类型的作用域。

_Generic:泛型选择,在编译时选择数个表达式之一的办法。


if
int
inline
_Imaginary

 

if:条件执行代码,在代码为真时执行代码,与else配套使用。if中可嵌套一个或多个if语句。

int:整数数据。定义整数变量的标识符。一般为编译器指定字节,多数电脑中占用4字节,32比特。

inline:内联函数,在函数声明或定义中函数返回类型前加上inline,即可以把函数指定为内联函数。inline必须与函数定义放在一起才能使函数成为内联。内联函数保证下列语义:任何拥有内部链接的函数都可以声明成static inline  ,没有其他限制。一个非 static 的内联函数不能定义一个非const的函数局部static对象,并且不能使用文件作用域的static对象。

_Imaginary:虚浮点类型,可以写成实数乘虚数单位的数,有三种虚数类型:float _Imaginary , double_Imaginary long ,double _Imaginary。虚数类型是独立的,且与其对应实数类型不兼容,这禁止别名使用。



long

 

long:长整数类型。


_Noreturn

 

_Noreturn:函数指定符。表明函数不会执行到函数体结尾和retnurn语句处返回。


shortstruct
signedswitch
sizeof_static_assert
static 

 

short:短整数类型。

signed:有符号数据类型

sizeof:运算符,需要得到特定类型或特定变量大小时使用,sizeof不能用于函数类型、不能确认类型的表达式(含void)或位域左值。

static:指定为静态变量(内部函数),在修饰函数时指定函数块的作用域为内部文件,它能用于在文件作用域的函数,以及文件和块作用域的对象,但不能用于函数参数列表。从当前翻译单元的所有作用域指代该标识符。所有static文件作用域标识符(函数和对象)都拥有此链接。

struct:结构体声明,将多种元素类型和长度统一架构在一起。在使用前必须先定义它,其内部成员以顺序分配到内存中。允许任意数量的变量声明、位域声明和静态断言声明。不允许不完整类型的成员和函数类型的成员。结构体不能拥有有其自身类型的成员。允许指向其自身类型的指针成员,结构体声明不建立作用域,所以在 struct-declaration-list 中引入的嵌套类型、枚举及枚举项会在定义结构体的外围作用域可见。 对结构体的不同成员赋值是互不影响的。

switch:开关语句,针对基本数据类型中的整数类型执行代码,switch()的参数类型不能为实型。在需要按照整数类型执行多个分支中的一个或数个之处使用,switch 语句体可拥有任意数量的case:分支标记,不允许两个case具有相同的值。

_static_assert:声明,在编译时求值该整数常量表达式并将它与零比较。若它比较等于零,则发生编译错误,而若提供任何字符串字面量 ,则编译器必须将它作为错误消息的一部分显示(除了不要求显示基本源码字符集以外的字符)否则,若该整数常量表达式不等于零,则什么都不发生,不生成代码。



typedef
_Thread_local

typedef:声明定义(将复杂声明定义简单别名)同时typedef还是存储类指定符,只是对存储和链接无影响。若声明以typedef为存储类指定符,则其中每个声明符都会定义一个标识符为指定类型的别名。因为一个声明中仅允许一个存储类指定符,声明不能为static或extern 。typedef声明不引入另一种类型,它只会建立既存类型的同义词,故而 typedef 名与其所别名引用的类型兼容。 typedef 名与通常标识符,例如枚举项、变量或函数共享通常命名空间。typedef 名可以是不完整类型,它会照常变得完整。

_Thread_local:线程存储类指定符。它不能用于函数声明。若将它用在对象声明上,则它必须在同一对象的每次声明上都存在。若将它用在块作用域声明上,则必须与static 或 extern其中一个组合以决定链接。


union
unsigned

union:联合体声明,在一个被定名的”联合“变量内可以在不同时间使用任何不同数据类型和不同长度的变量,所有数据处于同一内存中,相互重叠存在,并且同一时间只能储存其中一个成员变量的值。同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。对共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在。

unsigned:无符号数据类型


void
volatile

void:用于不完整类型的声明与无参数或无返回值的函数。

volatile:类型限定符,防止编译器优化变量的值。要求每次编译器直接读值。这表明在执行的单个线程内,volatile 访问不能被优化掉,亦不能与另一个被顺序点分隔了 volatile 访问的可观副效应重排。一个非 volatile 值到 volatile 值的转换是无效果的。欲使用 volatile 语义访问非 volatile 对象,必须先将其地址转换成指向 volatile 类型的指针,再通过该指针访问该对象。



while

while:循环结构,重复执行循环体,直到标量类型的值变得比较等于零则退出。此情况每次迭代前发生。常以布尔和指针表达式为循环控制表达式。布尔值 false 和任何指针类型的空指针值与零比较相等。设置某个点停止时可以使用break语句结束。

 


register
restrict
return

register:存储指定符。只对声明于块作用的域的对象允许,包含函数参数列表,提示编译器将该变量存储在cpu的寄存器内,并且声明为register的对象不能用作取值运算符的参数,而且register数组不能转换为指针。

restrict:类型限定符,它只用于限定和约束指针,只有指向对象类型的指针才能被 restrict 限定,restrict语义仅用于左值表达式,在它的定义下的指针不能通过除此指针外的其他间接或直接的方式修改内容。

return:返回函数值给主调函数,并终止当前函数,作为结尾return语句是必要,在无返回值时 } 花括号表示为0.但在拥有返回值的时候return语句必须存在。


学:C primer Plus(第六版)参考:百度百科,cppreference.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值