保留字(reserved word)

  保留字又称关键字。

  指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。

  每种程序设计语言都规定了自己的一套保留字。

  例如:BASIC语言规定不能使用LIST作为变量名或过程名,因为LIST是一个BASIC语言专用于显示内存程序的命令。

C有 22+10 = 32个关键字

C++ 有22+10+11+20 = 63 个关键字

JAVA 有22+ 9+ 17 = 48 个关键字 ps:以上内容来自百科。

其中,C89中,(C语言标准)中,

类型说明保留字:

int,long,short,float,double,char,unsigned,signed,const,void,volatile,enum,struct,union

语句定义保留字:

if,else,goto,switch,case,do,while,for,continue,break,return,default,typedef

存储类说明保留字:

auto,register,extern,static

长度运算符保留字:

sizeof

具体含义如下:

下面,我们就几个相对比较容易用错的保留字进行分析,主要包括

return, void, const, break, continue

以下内容参阅《c程序设计竞赛实训教程》和一些大牛博客结合写的。

1.return

return:结束一个函数并返回其后面表达式中的值。

初学的时候,有些不理解main 函数中return 0;有什么用,在写程序的时候老是忘记带上了。其实,带上return 0;是很有必要的。

main函数的返回值用于说明程序的退出状态,如果返回0,表示程序正常退出,否则表示程序异常退出。返回值传递给程序的激活者(操作系统)。

如果没有写return语句的话,c99(c语言标准)规定编译器自动在生成的目标文件中加入return 0;表示正常退出。

所以,为了代码规范,我们一般都必须带上return 0;

具体操作----- return (表达式);

其中,括号是可以省略的。 一般不省略,如果返回值为表示式的时候容易造成混淆。

return返回值的类型:一般是函数定义的类型,如果return后表示式的值类型和函数值的类型不一致,则以函数函数类型为准,即:函数类型决定返回值类型。

需要注意的一点,也是易错的一点是:return不能返回指向局部变量的类型。----因为在函数结束时局部变量被自动销毁(上篇博客提及的局部变量的生存周期),则返回的指针为指向已释放的空间,再通过此指针进行操作就会产生错误。

下面通过程序具体说明:

看下输出结果 4,3

程序中,函数test的返回值为指向局部变量num的指针,当主函数调用test函数的时候,返回ptr指针并且赋值给p指针变量,即num变量的地址赋给了p,但是必须明白,在test函数结束的时候,局部变量num的空间被释放了,这样用p来引用这个空间就会出错。

乍一看,和预期的一样,但是实际上,这样的程序是存在隐患的。

下面改改这个程序,就知道错在哪了。

运行结果: 15,7(也可能是15,9视具体环境而定。)

在这里,多了个test2函数。发现结果并不是我们预料的15,3 。 p指向空间的数据不是之前num所赋值的3.

这正印证了我们之前说过了,这样的返回存在隐患。 在test函数调用完后,系统释放之前给num分配的空间,但是p指针仍然指向那块区域。

在调用test2的时候,系统要为x,y分配空间。这时候就会把之前释放的那块空间给x,y再次分配使用,使用在赋值语句后,该空间的值发现了改变,使得*p发生了改变。

所以,切记 return不能返回指向局部变量的类型。

2.void

void :void为空类型。 void *为空类型指针。

其中,void a;是不允许的。 每次定义一个变量,系统都会为其分配空间,而void类型无法确定,系统就不知道该为它分配多大的空间,显然是不合理的。

void *p;是允许的, 因为这是一个指针变量,系统都是默认分配四个字节的空间,至于具体指向的空间总存放的数据类型,就由用户自行操作。

并且,在操作的时候,要把该void指针强制转换为相应类型的指针后才可进行操作。

如:

即:在使用void类型指针变量时,其他类型的地址可以直接赋值给void类型的指针变量,但反过来,void类型的指针变量赋值给其他类型的指针变量或取其所指空间数据时必须进行强转。

3.const

const:constant的缩写,意为不变。 即用const修饰的变量的不允许改变的。也可称为只读变量。

例如: int const m = 10; const int m = 10; (二者可以认为等价,const定义一般的变量比较简单。例如该例中都是限定m为10)

但是要注意一点,只读变量虽然值不能改变,但它还是变量,不是常量。

如 int const M = 10; int a[M]; 这样定义数组是错误的。我们知道,定义数组时,数组元素个数必须是常量(这样系统才知道要分配多大的空间),而M的本质是变量,只是值不改变的变量而已。

所以,一般我们定义数组采用这样的操作:

下面讨论下const定义指针,这就比较复杂了。

至于地址,数据,拿const int *p;举例。 此时,p=&a;操作是允许的,(修改地址)。而*p=10;是允许的(试图改变数据造成错误)。

在判读是修饰*p还是p时,我们可以先将定义中的类型标识符去掉(int),再观察const后面修饰的内容。

4 break,continue

至于break和continue,二者关系比较密切,结合探讨。 break退出当前循环,continue退出当次循环

continue

1、结束本次循环(不执行本次循环中continue后面的语句),继续下次循环条件判断;

2、不可作用于switch语句。当在switch中使用,这个continue实际是作用于其所属的循环结构;若它不属于任何一个循环,程序将因此报错!

break

1、结束整个循环,并停止下次循环条件判断;

2、可以作用于switch语句。

具体区别如下:

break和continue的区别如下:

break可用于switch语句,表示跳出整个switch块,而continue则不能用于switch语句

它们都可用于循环语句的循环体,所谓的区别也应该是它们对循环次数的影响不同。break用于立即退出当前循环,而continue仅跳过当次循环(本次循环体内不执行continue语句后的其它语句,但下次循环还会执行)。举例说明。

上面的循环会因为break语句而在i=6时提前终止,这样s的最终值就是1+2+3+4+5

如将break换成continue

当i=6时就不会将i累加到s中,s的最终值是1+2+3+4+5+7+8+9+10,唯独少一个6。

如有侵权,请联系删除!

原文:

【初识C语言】C语言保留字(关键字)详解​mp.weixin.qq.com

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习C语言或者有兴趣学习C语言的伙伴可以加我Q_2208165112。一起学习,一起进步。还有免费学习资料可以给各位伙伴

c语言中switch语句流程图_C语言:C语言保留字(关键字)相关推荐

  1. c语言中switch语句流程图_全国计算机二级知识点汇总(C语言等)

    点击蓝字 关注我们 全国计算机二级知识点汇总 算法的有穷性是指:算法程序的运行时间是有限的 算法的空间复杂度是指:算法在执行过程中所需要的临时工作单元数 算法的时间复杂度是指:算法在执行过程中所需要的 ...

  2. c语言switch语句支持的字符有哪些,C语言中switch()语句的括号内可以是什么型别的呢?...

    C语言中switch()语句的括号内可以是什么型别的呢?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中swit ...

  3. c语言switch语句最大嵌套数,浅谈C语言中switch 语句的嵌套使用

    浅谈C语言中switch 语句的嵌套使用 作者:未知 [摘要]switch语句是一种分支控制语句,它的应用在程序设计中起至了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套 ...

  4. c语言switch语句嵌套,浅谈c语言中switch语句的嵌套使用

    switch语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使用更是让初学者难以理解.本文通过介绍switch嵌套语句的形 ...

  5. c语言switch不允许实型,C语言中switch语句什么意思

    Switch在C语言中是保留字,其作用是进行判断选择.switch(开关语句)常和case break default一起使用. Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断 ...

  6. C语言中Switch语句的范围比较解决方案(学习笔记)

    临近国庆,小学期兴趣选修课结课时有一位朋友做C语言的结课作业时遇到了困难请教我,话不多说,先把题目贴上来: 程序设计题:薪水是上班族最关心的问题,对于即将步入社会的我们也同样重要,毕业后找到一份高薪的 ...

  7. c语言中ctod语句的作用,CTOD(c语言ctod函数)

    计算机VC中的ctod函数怎么用? 把 字符型 转换为 日期型 普通的日期型数据应该用花括号{}或CTOD()函数表示,如1999年8月20日可以表示为:{^1999/08/20}或CTOD("08/ ...

  8. c语言中switch结构,switch结构c语言

    C语言中switch结构的使用 用switch结构编制程序,输入1个学生的C语言课程考试成绩(百分制整形数因为case后面不能接范围,也就是说case后面是一个确实固定的常量.用下面的方法比较好, # ...

  9. Go 语言中 switch 类型断言用法

    Author mogd 2022-05-09 Update mogd 2022-05-09 Adage Don't live in the past. 目录 Go 语言中 switch 类型断言的用法 ...

最新文章

  1. 验证字符串是否为汉字
  2. 部门质量管理工作模板
  3. 拖拽之路(四):自定义QListView实现美观的拖拽样式(拖拽不影响选中)
  4. 解决macOS Sierra 隐藏“允许任何来源的应用”选项问题
  5. 《软件需求模式》05
  6. 熬了三个通宵的CV学习心法!我开眼了!
  7. 提升开发效率之命名规范
  8. [转载]AWS使用小记之EC2(Elastic Compute Cloud)
  9. springboot集成quzytz(简单易使用复制即可)
  10. oracle建表代码,oracle建表脚本当中使用默认值 (转)
  11. 根据android版本号,增加兼容性处理
  12. 2020年云计算发展趋势怎么样?
  13. nexus9刷机全记录
  14. 安卓手机测评_民宿预订Airbnb、途家民宿、小猪、木鸟短租、蚂蚁短租五大平台测评...
  15. @prometheus监控详解
  16. theano及cuda环境搭建
  17. html是一种通用的方法来,()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A.模板B.类C....
  18. 使用numpy进行9宫格图像拼接
  19. 第九章 - 线程安全集合类
  20. Bugku之聪明的小羊

热门文章

  1. quot c语言数组压缩 quot,程序员之---C语言细节12(指针和数组细节,quot;//quot;的可移植性说明)...
  2. hadoop 传感器数据_hadoop为什么是大数据学习的核心技术?
  3. DVWA Brute Force(low)
  4. 1564: Strange Class
  5. html lt;ligt; 属性,HTML文件中lt;HRgt;标签各个属性的作用是什么?
  6. AI圈内卷?天池团聚请来专家集体“问诊”
  7. 水阀门开关方向图解_低压阀门开闭器
  8. 从概设流程、审美、设计思路几个方面,漫谈游戏美术设计的思维方式
  9. 以核心体验设计为引,深入剖析“打铁”游戏《只狼》的精妙之处
  10. Python小游戏(贪吃蛇)