登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 第十一章:结构体类型

[复制链接]
发表于 2017-1-22 12:01:53 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C语言
学习安排: 详见:http://bbs.hpuedd.com/forum.php?mod=viewthread&tid=837&fromuid=385
开始时间: 2017-01-20
结束时间: 2017-01-20
struct关键字可以使你定义一个结构体类型

个人认为就是把一些不同类型组合到了一起以满足不同的需要

比如,你想储存一个学生的信息

它包含,名字,年龄等

那么每储存一个学生就需要将其信息进行依次声明

非常麻烦繁琐

所以就想,为什么指令可以封装成函数

数据就不可以封装呢

答案是可以

将你所需要的数据类型封装成一个结构体类型

那么这个结构体类型就包含了所有你声明在结构体中的类型

如:

1-1.PNG

运行是没有问题的

但是现在有一个问题

如何使用结构体?

首先,stu是一个类型,它并不是变量

所以我们应当声明一个结构体变量

如:

1-2.PNG


1-3.PNG

直接在结构体下方声明

那么我们得到的结构体变量A就是一个全局变量(作用域不在任何一对花括号之间,并且结构体名(stu)可有可无)

(PS:如果没用结构体名,那么无法进行结构体变量再创建,所以此方法不推荐)

而第一种声明我们得到的是局部变量

当然,我们也可以写成

1-4.PNG

这样也是全局变量

解决了声明问题

接下来就是如何使用了

如果是直接引用(不使用指针)

则直接用'.'(选择运算符)

如:

1-5.PNG

如果是间接引用(使用结构体指针)

首先声明指针

如:

1-6.PNG

然后再指向引用对象

1-7.PNG

此时引用方法为

1-8.PNG

(PS:加括号是因为运算优先级不一样'.'号比'*'号高)

非常繁琐,所以还有一种简单的间接引用方法

1-9.PNG

这种运算也被称为成员指针运算

那么此时,结构体类型的使用就和一般类型的使用基本一致了

因为结构体类型也是一个类型

所以可以进行结构体嵌套调用

也就是说,在一个结构体中可以调用另一个结构体类型

如:

2-1.PNG

问:为什么不是p->c->a

答:当p->c时为指针,当c.a时为直接调用

(当然,结构体还有诸多可包含的类型如函数指针,结构体指针,用法类似,在此不再赘述)

union(共用体)

它使多个类型共用一块内存

使用哪种类型进行存储数据就可以选择哪种类型进行数据存储

但是,如果更改它的类型时会内部数据变成垃圾值,需要重新赋值

除非特殊需要,一般不使用

(PS:其使用方法与结构体类似)


小结:

创建一个结构体数组,并用指针向其内部赋值



固态表格.txt

520 Bytes, 下载次数: 402

程序稍长,仅供参考

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表