完善资料让更多小伙伴认识你,还能领取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 文件中 定义一个加法函数,同时在主程序中,调用这样一个函数。属于夸文件操作。 执行结果: 注意:那么没有在文件中定义多的函数或者是类型,我们是不能进行外部调用的。它只针对已经存在的定义的变量。 |
|
相关推荐
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备组织架构
166 浏览 0 评论
480 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备树组成和结构
758 浏览 0 评论
【敏矽微ME32G070开发板免费体验】点亮WS2812B灯板
740 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核启动流程
828 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12157 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 11:37 , Processed in 0.547962 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号