您的位置:首页 > 编程语言 > C语言/C++

C语言系列——关键字

2014-12-29 16:40 197 查看
从接触C语言到现在也有好几年了,这个在阅读ESC32源码的时候感觉自己差的还是很多的。里面运用的大量的宏定义,这样就加大的阅读的难度,但是这样就大大方便的维护,这应该是一个平衡问题吧。今天就C语言关键字简单的总结一下,试问:C语言有多少个关键字呢?

关键字
意义
auto
声明自动变量,缺省使编译器一般默认为auto
break
跳出当前循环
int
声明整形变量
register
声明寄存器变量
double
声明双精度变量
const
声明只读变量
long
声明长整型变量
volatile
说明变量在程序执行中可被隐含改变

char
声明字符型变量
typedef
用以给数据类型去别名
float
声明浮点型变量
extern
声明变量是在其他文件中声明
short
声明短整型变量
return
子程序返回语句
signed
声明有符号类型变量
void
声明函数无返回值或无参数,声明空类型指针
unsigned
声明无符号类型变量
continue
结束当前循环,开始下一轮循环
struct
声明结构体变量
do
循环语句的循环体
union
声明联合体数据类型
while
循环语句的循环条件
enum
声明枚举类型
if
条件语句
static
声明静态变量
else
条件语句否定分支
switch
用于开关语句
for
一种循环语句
case
开关语句分支
goto
无条件跳转语句
default
开关语句中的“其他分支”
sizeof
计算机对象所在内存空间大小
在弄清上面这些关键字之前首先需要明白两个概念:什么是定义?什么是声明?它们有何区别?

定义:是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名。

声明:1.告诉编译器,这个名字已经匹配一块内存上了,

2.告诉编译器,这个名字我先预定了,别的地方不能用它来作为变量名了。

定义跟声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。

1> 最快的关键字——register

Register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中为不是通过内存寻址访问,它声明的变量在程序中使用频率较高

虽然寄存器的速度非常快,但是使用register修饰符也有限制的:register变量必须是一个单个的值,并且其长度用应小于或等于整型长度。而且register变量不能用取址运算符“&”来获取register变量的地址

2> 最冤枉的关键字——sizeof

sizeof是关键字不是函数,(我一直认为是函数,没想到确实关键字)为了证明它是关键字,我们借助编译器确 定它的身份,看下面的例子:

注意:这个关键字更运行环境,硬件平台有关,所以判断数值之前必须考虑硬件平台,最好的办法就是基于相应的平台加以测试。

3> 最易变的关键字——volatile

volatile是易变的、不稳定的意思。用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

4> 最会带帽子的关键字——extern

extern,外面的、外来的意思。extern可以置于变量或者函数前,以标示变量或函数的定义在别的文件中,下面的代码用到的这些变量或函数是外来的,不是本文定义的,提示编译器遇到此变量和函数时在其他模块中寻找其定义。



有些是我以前就用到的,只是没有深究,像基本数据类型的关键字这些就不用说了,基本会编程的人都懂。其中还有几个关键字如:struct、enum、typedef等这些也大量遇到,尤其这一些大型的程序中这些定义太常见,可以自己还是不敢用,主要是没有深入理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: