C语言关键字详解

更新时间:2023-07-15 08:00:46 阅读: 评论:0

C语言关键字详解
目录
1.简单数据的位长 (2)
2.unsigned 和signed 关键字 (2)
3.void关键字 (3)
4.控制关键字 (3)
threat5.存储类型关键字 (3)
5.1  auto关键字 (3)
5.2  register 关键字 (3)
5.3  static 关键字 (4)
5.4  Extern 关键字 (4)
5.5  union 关键字 (4)
5.6  enum 关键字 (5)
5.7. Const 关键字 (5)
5.8  volatile关键字 (5)
C语言是一门非常精炼的高级语言,ANSI C 标准中一共只有32个关键字。我们可以将这些关键字分为四组,如图1‐1所示。
表1‐1 C语言的关键字
关键字类型 关键字列表
数据类型关键字(12个) Char,double,enum,float,int,long,short,singed,struct,union,unsigned,void
控制语句关键字(12个) Break, ca, continue, default, do, el, for, goto, if, return, switch, while
存储类型关键字(4
个)
Auto, register, static, extern
其它关键字(4个) Const, sizeof, typedef, olatile
下面我按照这四类分组对C语言关键字进行总结,由于(structure,union,enum 这三类关键字涉及较为复杂的数据结构,在这里先不讨论)。
1.简单数据的位长
下面有表格的形式给出简单数据类型的取值范围
类型 ANSI C标准所允许的最小范围(注意这里是最小范围) signed char ‐127 ~ 127
unsigned char 0 ~ 255
signed short ‐32767 ~ 32767
unsigned short 0~ 65535
signed int ‐32767~ 32767
菠萝蜜的英文unsigned int 0 ~ 65535
Signed long  ‐2 147 483 647 ~2 147 483 647
Unsigned long 0 ~ 4 294 967 295
这里来解释红色注释的意思,由于运行C语言的平台千差万别,在不同处理器上的字长可能不一样,比如在51上int是16位的,而在32位的ARM处理器中则认为int是32位的,这由编译器决定。
2.unsigned 和signed 关键字
unsigned表示无符号数(包括0),signed表示有符号数,这两中类型的字符比较常见,这里就不多做解释,有上表也可以很明显的看出他们的区别。
3.void关键字
Void关键字是在ANSI C标准中才引入的新的关键字。Void关键字有以下三个用途。
1.用来修饰函数的返回值  如:void main()
2.用来声明函数的入口参数  如:int main(void)
圣诞快乐的英语
失败是成功之母英语3.用来声明空类型指针    如:void *malloc(int)
4.控制关键字
由于控制关键字在绝大部分C语言书中都有写到,这里就先不讨论。
5.存储类型关键字
5.1  auto关键字
在一个C函数内部声明的变量是局部变量,局部变量的作用域仅限于声明该变量的函数内部,对函数外面的代码是不可见的。默认情况下的存储类型是自动的,也就是说要么这个变量被存储在堆栈中,要么被存储在CPU的内部寄存器中,到程序执行到申明自动变量的代码时,自动变量才会被创建,当程序执行流离开该代码段时,这些变量便自动销毁,所以说自动变量是动态的。Auto在现代C 语言中没有什么实际的用途,因为局部变量默认就是自动变量。
5.2  register 关键字
关键字register可以用于自动变量的声明。这个关键字提示编译器将register关键字修饰的自动变量存储在CPU内部的通用寄存器中,这些变量被称为寄存器变量。由于CPU内部寄存器的速度要远高于外
部存储器,因此将这些变量存放在寄存器中将获得更高的访问效率,但编译器不一定遵循程序员的这个建议,如果太多的自动变量被声明为寄存器变量,则编译器可能只取前面的几个放在寄存器中,其余的保存在堆栈中,另外如果编译器拥有自己的一套寄存器优化方法,可能也会忽略register关键字,因为编译器的决定可能比程序员的选择更合理。
static关键字可能是C语言中比较多意的一个关键字,该关键字的含义取决于使用这个关键字的上下文。
Static关键字一共有三种用途:
如果它用于函数内部局部变量的声明时,static关键字的作用是改变局部变量的存储类型,从自动变量改为自动变量。也就是说局部变量不再存储在堆栈或寄存器中,而是在编译的时候由编译器分配一个静态的地址空间。但这个变量的作用域不受影响,依然仅局限在声明它的函数内部才可以访问。需要说明的是一旦函数内部的局部变量被声明为static,这个函数就有可能变的不可重入。
如果static关键字被用于函数的定义时,这个函数就只能在该函数的C文件中应用,该C文件以外的代码将无法调用这个函数。
在用于全局变量的声明时,static关键字的作用类似于函数的情况,这个全局变量的作用域仅限于该变
量的C文件内部,这个C文件之外的代码将无法访问这个全局变量(实际上,如果采用指针的方式进行访问还是可以的,但这样就违背了将一个全局变量声明为static的初衷了)。
吴彦祖魔兽5.4  Extern 关键字
默认情况下C语言的全局变量和函数的作用域仅限于定义或者声明这个函数或变量的C文件内部,如果需要从这个C文件之外访问这个函数或者全局变量就需要使用extern关键字。这是因为C编译器是以C文件为单位进行编译的,如果应用了其他C文件中定义的函数或者变量,编译器将无法找到这个函数或变量的定义,从而提示函数或变量未定义的错误信息。为了解决这个问题,C语言中采用了extern这个关键字。peru
5.5  union 关键字
在一个结构(变量)里,结构的个成员顺序排列存储,每个成员都有自己的存储位置,联合变量的所有成员共享一片存储区,因此,一个联合变量在每个时刻只能保存它的一个成员的值。
联合变量也可以在定义时直接初始化,但这个初始化只能对第一个成员进行,例如下面的语句定义了一个联合变量,并进行了初始化:
Union data
{
Char n;
Float f;
};
Union data u1={3};  //只有U1.n被初始化了。
icba枚举是一种用于定义一组命名常量的机制,以这种方式定义的常量一般称为枚举常量。一个枚举说明不但引进了一组常量名,同时也为每个常量确定了一个整数值,默认情况下其第一个常量自动给值0,随后的常量顺序递增。
纽约时报中文5.7. Const 关键字
ANSI C中允许程序员利用const关键字声明一个变量是“只读”的,在C语言中这意味这这个变量的值不能改变(也就是说,这是一个不能改变的变量,这有点矛盾,但确实准确的描述了这个关键字的本意)。所以在这里说是只读的变量。
5.8  volatil e关键字
specify是什么意思
一个定义为volatile关键字的变量可能会被意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说就是,优化器在用到这个变量时必须每次都小心的重新读取这个变量的值,而不是使用保存在寄存器里面的备份。
pyp到这里C语言的关键字就介绍完了,感谢大家的阅读,欢迎大家提出宝贵意见!
我的百度空间:/zhangjiayue123/home  欢迎大家访问。

本文发布于:2023-07-15 08:00:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/177987.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图