本文为大一时所写的文章(2017/4/12),文笔还很生疏,在很多问题上认识不深,算是在学校的微信公众号上的一个编程探究模块上的投稿,本人当时也参与了本模块的维护和管理。补档。
D.M.Ritchie说:计算机需要光明,于是他创造了C语言,
D.M.Ritchie说:计算机需要空气,于是C语言有了函数,
D.M.Ritchie说:计算机需要水,于是C语言有了结构体,
D.M.Ritchie说:计算机需要思考,于是C语言有了算法,
…
D.M.Ritchie说:计算机需要灵魂,于是C语言有了指针。
以上便是我对C语言的浅显的见解(日后必定会补充)
那么,今天我们来聊一聊有关结构体的一些知识。
一、结构体基本定义
结构体(struct)——是由一系列具有相同类型或不同类型的数据构成的数据集合,数据包括整型,实型,指针,数组等。也就是说将一系列你所需要的数据进行“打包”,里面可以存放你需要的数据,简便了运算,是程序提高了可读性和健壮性。同时结构体也是数据结构的基础。(数据的结构化都由其实现)
结构体的基本格式是:
Struct 结构体标签(tag){成员(member)}变量(variable);
例如:
结构体的长度是所有数据类型赋予的大小的总和。
引用成员的基本格式是:结构体变量名.成员名
PS:变量也可以在主函数中声明,类似你创建了一个你自己喜欢的类型,以后只要变量被声明为标签所指的结构体,那么也就可以对其中的成员进行操作了。
二、相关关键字
说到结构体就不得不说typedef了,自定义类型(typedef)是给一些复杂的声明定义一个简单的别名,结构体在定义一组数据的时候简化了运算,但注意正如其字面意思,别名可以和真名同时存在,别名只不过是给了原本的一种简单的表示方式而已,这和宏定义有一定的区别。
例如:
但是你在主函数中声明结构体变量是这样的:
但是如果你用typedef的话,创建结构体的时候这么写:
那么你在主函数中声明结构体变量是这样的:
PS:图中的PNODE是 也就是说成员类型也可以是结构体,不管是自己还是其他结构体都可以。
需要注意的是
结构体中的成员名可以与程序中的变量名相同,对程序中的变量赋值时不会影响到结构体成员本身
如果一个成员自己也是一个结构体类型,则要用若干个成员运算符,一层一层地找到最低一层的成员,有几层就需要几个.(成员运算符)
可以将一个结构体成员的值付给另外一个同类型的结构体成员的值。
结构体更多的内容在教材中可以找到,需要大家细心阅读。
三、结构体简单实例
按本人的理解,创建结构体类似于自制一个Excel的表头,声明的数据类型则是行和列,对结构体进行输入存储类似于填写表格的内容。
在一开始你需要用这个表格做什么,要如何实现最后的结果——是对行求和还是对列求平均值?
当然,以结构体为跳板,能实现的功能还有很多很多,比如栈和队列两大经典数据结构。
就目前来看,我们应该巩固结构体相关格式和简单应用,下面放一个本人写的实例大家来交流一下。
其中用到了->,叫做“指向结构体成员运算符”功能是用一个指向结构体的指针访问她的成员。
结果为:
这个程序用结构体来模拟了一个数组的初始化以及相关运算,此时,list1就是数组的首地址。结构体变量声明在主函数内,相关运算由用户函数来实现,我在每个用户函数后加了注释,有兴趣的同学可以看看,看有没有更简单的算法或者纠正我的错误。
下次暂定讨论指针的相关知识。
由于本人的能力有限,代码难免出现错误,请各位同学斧正!
C语言结构体的浅显探讨和学习笔记
最新推荐文章于 2021-09-27 20:24:25 发布