当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > C语言关键字专题
C语言关键字专题
时间:2014-11-20作者:华清远见,熊老师

C语言允许我们自己构造我们自己的数据类型,这点非常有用。也给我们的编程带来许多方便,这点在数据结构课程中体现的较为明显。那么我们来接着往下看。

一、结构体

执行结果:

分析:

我们上面的例子中,通过struct 构造了一个全新的数据类型。通过这样一个数据类型,来定义我们的变量。然后对结构体的每个成员进行赋值初始化,记住一点,整形和字符型都可以直接赋值,但是字符串是不行的,必须通过字符串的拷贝函数。因为咱们的字符串"zhang san"存放在咱们的常量区,它作为一个整体仅仅表示的是一个首地址。

还有的同学常常把结构体名和结构体变量名搞混淆,分不清,乱赋值。以上例子中结构体名是student,变量名是stu。如果我们定义一个整形变量,int a , int是类型,a是变量名。相当于struct student <==> int , stu <==> a, 这样说相信大家能够理解的更加的透彻了。

执行结果:

分析:

对于嵌套结构体的定义,那么我们需要在结构体里面构造一个新结构体,那么这样一个新的结构体,需要在定义的时候同时申明变量。如birth。

因为我们的struct birthday 这个结构体属于内部结构体,那么我们可以把结构体名除掉,定义也行。

二、共用体

共用体与结构体大的不同在于,共用体的所有成员,共享一段存储空间,大小以成员中占大的类型那个为主。而结构体的每个成员都会有自己的内存空间。使用结构体传输数据的过程中,还有一个需要注意的问题就是内存对齐的问题。

执行结果:

分析:

看看我们的打印结果。我们分析在当前的系统下是int 占用四个字节,char占用一个字节,那么数据是怎么存放的呢?

因为我们的平台是小端存储。所以咱们的char型数据打印的是0x78.

三、typedef 关键字

typedef的意思是起别名,当它和结构体一起组合使用的时候,很多人就迷糊了啊,那么我们现在就来揭开它的神秘面纱。

执行结果:

分析:

通过上面的程序我们这样来理解typedef关键字,它天生就是来给别人起别名的。一个人可以有两个名字,但是它所代表的含义是没有变化的。A 代表 int 型了。这样看来就很简单嘛,那么咱们给他换个马夹看你能不能看懂了。记住typedef 后面要用";"表示一条语句。

执行结果:

分析:

看看上面的例子,是不是就换了一个马夹啊,必须要搞懂的啊。此时BOOK代表的就是这个结构体,相当于BOOK <==> struct book .

如果你觉得你懂了,那么下面这个把BOOK,代表的是什么意思呢?此时的BOOK是一个具体的变量 相当于咱们上面的mybook一样的啦

四、static关键字

Static修饰的类型变量,在静态区开辟空间。Static关键字有三个特点,一是限制该变量的作用域,在本函数或c文件中有效。二是生命周期较长,进程结束才释放空间。三是默认初始化为0。因为他一直活着,static int sum = 0, 只在第一次执行的时候有效。下次略过。

执行结果:

五、枚举关键字enum

枚举类型是为了提高程序的可读性,它里面的值代表的都是常数,整形的。

执行结果:

第一个值默认为0,如果后续在定义的过程中有赋值的话,它后面的值就依次增加。

执行结果:

六、extern关键字

extern关键字,属于外部调用咱们已经定义好的变量,一般是如例子中,在add.c 文件中 定义一个加法函数,同时在主程序中,调用这样一个函数。属于夸文件操作。

执行结果:

注意:那么没有在文件中定义多的函数或者是类型,我们是不能进行外部调用的。它只针对已经存在的定义的变量。


发表评论
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号