C语言32个关键字-最详解释

5 篇文章 6 订阅
订阅专栏

在了解关键字之前,先要明确定义与声明的区别:
定义: 编译器创建一个对象,为这个对象分配一块内存并给取一个名字,这个名字成为变量名或对象名。
声明:告诉编译器,这个名字已经匹配到一块内存上了,其不能再用这个名字进行定义。
主要区别:定义创建了对象并为这个对象分配了内存,而声明没有分配内存。

C语言标准定义的32个关键字可以分为如下四类:

一、数据类型关键字

序号关键字说明
1char声明字符变量
2double声明双精度变量
3float声明浮点型变量
4int声明整型变量
5short声明短整型变量
6long声明长整型变量
7unsigned声明无符号类型变量
8signed声明有符号类型变量
9struct声明结构体变量
10union声明共用体或联合数据类型
11void声明函数无返回值或无参数,声明无类型指针
12enum声明枚举类型

重点说明:
1、chart、short、int、long、float、double
有一个常被提及的问题:int类型究竟占多少个字节?一般默认为4个字节,而有一点功底的人都知道它的大小是跟机器有关的,感兴趣的可以查看其它文章。int具体大小可用sizeof关键字查看,代码如下:

# include <stdio.h>
void main()
{
	printf("char类型变量大小为%d字节\n",sizeof(char));
	printf("short类型变量大小为%d字节\n",sizeof(short));
	printf("int类型变量大小为%d字节\n",sizeof(int));
	printf("long类型变量大小为%d字节\n",sizeof(long));
	printf("float类型变量大小为%d字节\n",sizeof(float));
	printf("double类型变量大小为%d字节\n",sizeof(double));	
}

运行结果:

2、signed、unsigned
signed和nsigned用于修饰整数类型。默认的int、short、long为有符号数,如signed int 等价于 int(其它类推)。

另外,char共有三种不同的类型:char、signed char、unsigned char。char类型是真正的字符类型,用来声明字符;而signed char和unsigned char是用来声明数值的。因此不要将三者混用。

数值范围如下:
signed char表示范围:[-128, 128);
unsigned char表示范围:[0, 256);

3、struct
在实际问题中,一组数据往往具有不同的数据类型。struct关键字就可以将这些不同数据类型的数据打包成一种构造数据类型。这种构造类型由多个成员组成,每一个成员可以是一个基本数据类型或者另一个构造类型。一般情况下,结构体所占内存大小是其成员所占内存之和。但空结构体的内存大小在不同编译器里有0有1,读者可以试一试。

4、union
union关键字用法与struct非常相似,但也有区别。struct中的所有数据成员是共存的,不管有没有调用,编译器都会分配内存;而union中的数据成员是互斥的,它只配置一个足够大的空间来容纳最大长度的数据成员。即union中所有数据成员共用一个空间,同一时间只能存储其中一个数据成员,所有数据成员具有相同起始地址。

5、void
void的作用是对函数返回值的限定、对函数参数的限定和声明空类型指针。如果定义函数时不加返回类型限定,则编译器会作为返回整型处理,而不是void, 用void声明的函数表示该函数无返回值;同理,当函数无参数时,可以给无参数函数传送任意类型的参数而不影响程序执行,只有用void指明函数参数时,给无参函数传入参数时编译器才会报错。
另外,不同数据类型的指针必须经过类型强制转换后才能相互赋值,而void指针可以接受来自任意数据类型的指针赋值,但void指针不能在没有强制类型转换下直接赋值给其它类型的指针。

二、控制语句关键字

1、循环语句类型关键字(5个)

序号关键字说明
1for遍历循环
2do其后紧跟循环体
3while条件循环或死循环
4break跳出当前循环
5continue终止本次循环,开始下次循环

2、条件语句类型关键字(3个)

序号关键字说明
6if条件语句
7else条件语句否定分支
8goto无条件跳转语句

重点说明:
goto语句,有人主张禁用,有人主张慎用,个人认为用来跳出多重循环还是可以的。

3、开关语句类型关键字 (3个)

序号关键字说明
9switch用于多条件判断语句
10case多条件判断语句分支
11default开关语句的其它分支

重点说明:
switch、case组合语句可以看作为if、else语句的加强版。后者适用于二分支或嵌套较少的分支,前者则在面对多分支情况时有更高的效率。
case语句需要注意的点很多,如:
为了避免多个分支重叠,需要在case结尾加上break;
不要忘了default语句;
case语句的排序问题等。

4、返回语句类型关键字(1个)

序号关键字说明
12return函数返回语句

重点说明:
return用于终止一个函数,并返回其后面跟着的值。

三、存储类型关键字

序号关键字说明
1auto声明自动变量
2extern声明变量是在其他文件定义
3register声明寄存器变量
4static声明静态变量

重点说明:
1、auto关键字声明自动变量,由编译器自动分配及释放。这种变量在程序执行时被快速建立,程序退出后被自动撤销,在缺省的情况下,编译器默认所有变量都是auto的。

2、static为声明静态变量,主要有修饰变量和修饰函数的作用。
修饰变量时
变量又分为局部变量与全局变量,当变量被修饰为静态全局变量时,它的作用域为定义之处开始,到文件结尾处结束,其它文件用extern声明也没办法使用它;当变量在函数体内被static修饰,则该变量只能在这个函数里使用,即使是同一个文件也不行,称为静态局部变量。静态变量总是存储在内存静态区,即使是程序执行完毕它的值也不会被销毁。
修饰函数时
在函数前面加static可以使函数变为静态函数,静态函数的作用域仅局限于本文件,这样可以避免其它文件中定义的函数重名。
3、extern 关键字置于变量或函数前,表明变量或函数的定义在其它文件中。链接器在遇到此类变量时会在其它模块中解析/捆绑此标识符。
4、register
这个关键字请求 编译器尽可能地将变量存储在cpu的内部寄存器中,而不是通过通过内存寻址来访问变量,这有效地提高了效率。理解这个关键字需要弄那个明白cpu、寄存器与内存之间的关系,cpu是不直接和内存打交道的,cpu与内存之间的数据传输需要经过寄存器,故而将变量存储在寄存器可以提高运行效率。
PS:寄存器其实就是一块一块小的存储空间,只不过其存储数据要比内存快得多。

四、其它关键字

序号关键字说明
1const声明只读变量
2sizeof计算数据类型长度(字节数)
3typedef给数据类型取别名
4volatile所修饰的对象不能被编译器优化

重点说明:
1、const修饰只读变量,变量一旦赋初值就不能被修改。编译器不为只读变量分配内存,这使得它的效率也很高。
2、sizeof后面常跟这一对括号,但它绝对不是函数,它可以计算数据类型的大小,单位为字节。
3、typedef的意思是给一个已经存在的数据类型取一个别名,而不是定义新的数据类型。尤其是结构体之类的自定义数据类型,常常需要取一个适用于实际情况的别名。如:

typedef struct Student
{
int a;
}Stu;
//这里的Stu实际上就是struct Student的别名

4、volatile是一种类型修饰符,编译器会对它修饰的变量进行特殊地址的稳定访问而不进行代码上的优化。那这里的优化具体指的是什么意思呢?

比如你想要吃苹果,这时你有两种选择,去苹果园(特殊地址)摘和去商店买,商店里的苹果来自苹果园。所谓的优化实际上是一种“偷懒”行为,当你每次吃苹果都只是去商店买而不去苹果园摘,就是一种优化行为。volatile关键字就是要你每次吃苹果时都只能去苹果园摘而不能去商店买,这就是特殊地址的稳定访问。因为商店里的苹果可能是坏的,已经改变的,而苹果园里的苹果一直都是新鲜的,完好的。

回到程序里一想,如果你需要某个变量的值稳定,而它又可能在程序执行过程中移到其它地方(商店)时发生改变,为了防止编译器“偷懒”,故你需要在这个关键字前用volatile修饰。

五、表格汇总

32个关键字如下:

autobreakcasecharconstcontinuedefaultdo
doubleelseenumexternfloatforgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedvoidvolatilewhile

【参考文献】
[1]《C语言深度解剖(第2版)》,作者:陈正冲

c语言32关键字.xlsx
10-14
c语言32关键字.xlsx
C语言32关键字详解.doc
07-02
C语言32关键字详解
C#关键字汇总
最新发布
2401_82584055的博客
04-22 529
这只是一个简要的C#关键字列表,并不完整。随着C#版本的更新,可能会有新的关键字被引入。建议查阅最新的C#文档或规范以获取最完整和最新的关键字列表。C#是一种强大且灵活的编程语言,拥有许多关键字,用于声明类型、变量、方法、类等。abstract:声明一个抽象类或方法,需要在派生类中实现。continue:跳过当前循环的剩余部分,进入下一次迭代。finally:无论是否发生异常,都会执行的代码块。params:允许在方法参数中传递可变数量的参数。fixed:固定变量的地址(用于不安全代码)。
C语言(一):32关键字及其用法
观月执白
12-28 6746
由ASCII标准定义的C语言关键字32个: 数据关键字12个:char,double,float,enum,float,int,long,short,signed,struct,union,void 控制语句关键字12个:for,do,while,break,continue,if,else,goto,switch,case,default,return 存储类型关键字4个:auto,ex...
C语言32关键字和9种控制语句
liu_jun_y的专栏
06-26 5155
一、C语言关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。   1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int: 声明整型变量或函数 (6) long :声明长整型变量或函数
C语言32个基本关键字
热门推荐
weixin_73020322的博客
08-19 3万+
c语言32关键字
C语言关键字详解
weixin_51008519的博客
05-08 3689
C语言32关键字,这些关键字是预定义的标识符,具有特殊的含义。下面我将这32关键字按照功能分成几类,并提供一些简单的示例代码。
深入理解C语言关键字用法
m0_53994544的博客
10-23 1933
本篇文章总结了各个关键字的用法、特殊用法。对C语言关键字进行深入的理解。 一、C语言标准定义的关键字(共32个)及其意义 关键字 意义 auto 声明自动变量,缺省时编译器一般默认为auto int 声明整型变量 long 声明长整型变量 double 声明双精度变量 char 声明字符型变量 float 声明浮点型变量 short 声明短整型变量 signed 声明有符号型变量 unsigned 声明无符号变量 struct 声明结构体变量 u.
【保姆级讲解】C语言---32关键字精华
weixin_51177279的博客
05-14 1672
C语言32关键字 1.1类型关键字(12个) char、short、int、long、float、double、unsigned、signed、struct、union、enum、extern、static 1.2控制语句(12个) if、else、switch、for、while、do-while、case、break、continue、goto 、return、default 1.3存储类型(4个) auto、static、register、volatile ①auto在C语言中只有
简述C语言32关键字
qq_54186956的博客
08-04 6469
C语言中,一共有32关键字,这些关键字我们可以将其非为两类:分别是数据类型关键字和流程控制类关键字。其中数据类关键字又可以分为A基本数据类型(5个)、B类型修饰关键字(4个)、C复杂类型关键字(5个)和D存储级别关键字(6个);而流程控制类关键字可以分为A跳转结构(4个)、B分级结构(5个)和C循环结构(3个),本文简述C语言中的32关键字...
C语言初识常见关键字-typedef重定义
12-22
typedef 是 C 和 C++ 语言中的一个关键字,用于为数据类型定义一个新的名称。这可以使得代码更加简洁和可读。通过使用 typedef,我们可以为基本数据类型、结构体、联合体等定义别名,这样在后续的代码中就可以使用这...
C语言32关键字含义特别说明
01-21
C语言32关键字含义特别说明,非常重要,一定要掌握,非常不错
学科重点-C语言32关键字详解.zip
03-14
学科重点或者教材答案
C语言关键字-static
08-10
众所周知局部变量在存储方式上可以分为auto (默认的,可省略) static register这3种 其中auto是分配在栈上,占用动态存储空间,在函数调用结束后自动释放;static 分配在静态存储空间,两者的作用域相同,但是生存...
c语言32关键字9种控制语句.c
10-07
C语言关键字共有32个,数据类型关键字(12个),控制语句关键字(12个),存储类型关键字(4个),9种控制语句
C语言中的关键字-高手经验
02-03
c语言中有很多关键字,直接影响着开发程序的运行正常与否,很容易被初学者忽视,这个文档说明了关键字的用法和注意事项,对于初学者有帮助。
C语言中的32关键字及部分讲解
Eyoru的博客
07-13 1万+
说起c语言中的关键字,大家印象最深的可能就是int,double等定义一个数据变量时所使用的关键字了。但是除了这些数据类型的关键字还有哪些呢?for?while?没错,这些确实都是,但是并没有一个系统的总结。本文笔者就将就c语言学习中所遇到的共计32关键字进行整理。请善用搜索功能。   首先是对关键字的罗列以及相应的简介: auto                    声明自动变量 缺省...
c语言关键字都是什么字母,在C语言中的32关键字具体是哪些?
weixin_42523846的博客
05-18 1461
用户:phm_20162008年10月29日关键字是电脑语言里事先定义的,有特别意义的标识符 ,有时又叫保留字。系统定义了以下关键字:Const(常数) Dim(定义) As(为) Mod(取模)And(并且) Or(或者) Not(非)If (如果) Then(那么) Else(否则)Stop(停止) End(结束)Select(选择) Case(条件) Is (是)For(计数) To(到) ...
C语言关键字能用大写字母,C语言关键字及其解释
weixin_39870413的博客
05-16 1913
C语言关键字及其解释C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。C语言一共有32关键字,如下表所示:关键字说明auto声明自动变量short声明短整型变量或函数int声明整型变量或函...
c语言32关键字翻译图
04-28
C语言是一种很受欢迎的编程语言,它使用32关键字来控制程序结构和执行过程。这些关键字不同于普通变量名或函数名,具有特殊的语法意义,因此翻译这些关键字非常重要。下面是这些关键字的翻译图: 自动(auto):用于声明自动变量,通常在函数中使用。 双精度(double):用于声明双精度浮点数型变量。 打破(break):用于中断当前循环或switch语句。 案例(case):用于定义switch语句中的分支。 字符(char):用于声明字符型变量。 连续(continue):用于跳过当前循环的余下部分。 默认(default):用于定义switch语句中的默认分支。 执行(do):用于定义do-while循环。 双次(else):用于定义if语句中执行非if分支的情况。 枚举(enum):用于定义枚举类型。 外部(extern):用于声明外部变量或函数。 浮点(float):用于声明浮点型变量。 为(for):用于定义for循环。 去(goto):用于跳转到程序中某个标号。 如果(if):用于定义条件语句。 整型(int):用于声明整型变量。 长(long):用于声明长整型变量。 登陆(signed):用于声明有符号型变量。 长度(sizeof):用于获取数据类型或变量的长度。 静态(static):用于声明静态变量或函数。 结构(struct):用于定义结构体类型。 开关(switch):用于定义多分支情况下的判断语句。 类型定义(typedef):用于定义自定义数据类型。 联合(union):用于定义联合体类型。 未登陆(unsigned):用于声明无符号型变量。 返回(return):用于从函数中返回值。 短(short):用于声明短整型变量。 如(sizeof):用于获取数据类型或变量的长度。 紧缩(volatile):用于标识变量可能会改变,以便编译器不会将其优化。 当(while):用于定义while循环。 以上就是C语言32关键字的翻译图,它们在程序中扮演着非常重要的角色,熟练掌握这些关键字,可以使程序的编写更加简洁、清晰和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 相角裕度与幅值裕度 45822
  • 零阶保持器 37820
  • 典型环节的频率特性(建议收藏) 36035
  • 用Matlab建立传递函数模型 29054
  • python输出希腊字母 27103

分类专栏

  • STM32 8篇
  • C语言 5篇
  • Matlab 7篇
  • Python 3篇
  • 控制实践 5篇
  • 现代控制理论 2篇
  • 自动控制原理 30篇

最新评论

  • 离散系统的稳定性分析

    weixin_53830485: 时变系统也是满足的么?

  • 【课设必备】-Matlab设计串联超前校正-纯干货

    普通网友: 大佬可以解答一下吗,非本专业毕设要用表情包也是这个问题

  • 新西达电调驱动直流无刷电机

    2401_83290753: 翻了好多帖子,只有你说到点子上了,点赞

  • 串级PID及角度过零处理

    2301_81798835: 博主您好,我出现了一个问题,就是设置转一两圈它能够停下,但是设置转十圈一直停不下来,速度就稳定在一个小范围,能够指点一下我吗表情包

  • 新西达电调驱动直流无刷电机

    file fine: 写的太好了,找了好多帖子都没讲明白

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【遗传算法整数交叉】
  • 非线性之描述函数法
  • 离散系统的稳定性分析
2023年1篇
2022年2篇
2021年40篇
2020年19篇
2019年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码双龙网站制作永湖阿里店铺托管木棉湾网站开发双龙建网站爱联百搜标王吉祥seo排名吉祥网站搜索优化光明SEO按天计费南山阿里店铺运营荷坳品牌网站设计丹竹头关键词按天计费南澳网站排名优化大芬网站建设设计南澳网站改版大浪网站开发丹竹头优秀网站设计大鹏网站制作设计南联seo网站优化爱联网站优化按天计费坪山百度网站优化观澜网站改版丹竹头网站推广工具东莞seo排名南联网站搜索优化南联建站坂田网站定制大芬网站优化按天计费双龙百搜词包光明网站改版广州阿里店铺托管歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化