c语言关键词详细解释,40节免费编程课

首页 > 教育培训 > 作者:YD1662023-06-20 02:34:31

保留字(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

具体含义如下:

c语言关键词详细解释,40节免费编程课(1)

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

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不能返回指向局部变量的类型。----因为在函数结束时局部变量被自动销毁(上篇博客提及的局部变量的生存周期),则返回的指针为指向已释放的空间,再通过此指针进行操作就会产生错误。

下面通过程序具体说明:

c语言关键词详细解释,40节免费编程课(2)

看下输出结果 4,3

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

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

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

c语言关键词详细解释,40节免费编程课(3)

运行结果: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指针强制转换为相应类型的指针后才可进行操作。

如:

c语言关键词详细解释,40节免费编程课(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.