C语言结构体的浅显探讨和学习笔记

本文为大一时所写的文章(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就是数组的首地址。结构体变量声明在主函数内,相关运算由用户函数来实现,我在每个用户函数后加了注释,有兴趣的同学可以看看,看有没有更简单的算法或者纠正我的错误。
下次暂定讨论指针的相关知识。
由于本人的能力有限,代码难免出现错误,请各位同学斧正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值