当前位置:首页 > 科学课件 > 正文内容

为什么要用C语言中的结构体?我感觉它有些难,不用的话有什么后果?

zhao_admin1年前 (2022-05-22)科学课件45

C语言的结构体是非常重要的语法,毕竟当初祖师爷发明C语言的其中一个首要任务就是要能提供数据的结构化。题主觉得结构体难,估计是因为初学C语言的缘故。

还记得刚开始接触 C 语言的时候,为了描述一个平行四边形的边长和对角线长,我定义了四个变量:短边长 a,长边长 b,对角线1长 d1,对角线2长 d2。

在写代码的过程中,发现又要定义一个平行四边形,于是我不得不又定义了四个变量:a2,b2,d12,d22,结果变量又多又乱,写代码很不舒服,太容易弄混了。当时我还想,幸好没有第三个,第四个平行四边形。

后来,我发现原来 C语言原来还有结构体这种语法,不禁感叹当初我那种做法实在是太笨了。

C语言中的结构体(复合数据类型)C语言初学者最先接触到的数据类型大多都只具有单一的值,例如整数,字符,真假值,小数,在C语言中(或者说编程语言中)这些数据类型通常被称作基本数据类型。

事实上,C语言中还有复合数据类型,那什么是复合数据类型呢?实际上,你可能已经用过复合数据类型了:由许多字符组成的字符串,就是典型的符合数据类型。

复合数据类型,其实就是由基本类型组成的数据类型。本节打算介绍的结构体也是一种复合数据类型,我们不讨论结构体的定义,直接看实例:

用 C 语言制定一个描述平行四边形边长和对角线长的结构体数据类型。

这个需求是容易实现的,我们用 double 类型来描述“长度”,那么结构体可以如下定义:

要注意的是,结构体定义完后,大括号后面要用 “;”结束。parallelogram 并不表示一个变量,它表示一种复合数据类型,struct parallelogram{ double a, b, d1, d2; } 整体可以看做一个就像 int,double 一样的数据类型。那怎么使用它呢?请看下面的C语言代码实例:

这样我们就定义好了 p1 和 p2 两个结构体变量。事实上,定义好结构体 数据类型之后,可以只使用 struct parallelogram 来定义变量,请看:

这样定义的 p3 和 p4 与上面那种方式定义的 p1 和 p2 是一样的。如果采用上面那种定义方式,parallelogram 也可以不写:

但是这样就没有办法再引用这个结构体类型了,因为它没有名字。定义好变量后,就可以用“.”运算符来访问结构体的各个成员了。例如:

很明显,用结构体来描述平行四边形的边长问题,比定义多个 double 变量方便多了。只需要用 struct parallelogram 定义一个变量,这个变量自己内部就有平行四边形的短边长,长边长,对角线1长和对角线2长了。而且不会弄混,p1 和 p2 的成员彼此是隔离的,使用 “p1.”访问的变量肯定是 p1 的。这样一来,要定义再多的平行四边形都不怕了。

C语言结构体的初始化我们使用基础数据类型时,初始化很方便,直接赋值就可以了,结构体怎么初始化呢?请看下面的C语言代码:

这几种方式都是可以的,只不过要是使用第一种方式定义,p1 必须是局部变量。p1 若是全局变量,就只能用常数表达式定义了。

另外需要特别注意的是,一旦变量定义好了,就不能直接用下面种方式赋值了,但是同类型之间可以赋值:

我们用一个完整的例子结束本节,请看下面的C语言代码:

编译并执行,得到如下结果:

注意,上面定义的变量 a 与 结构体里的 a 并不冲突,因为结构体里的 a 是用过“.”运算符访问的,编译器可以区分,它们属于不同的命名空间。

好了,学会了C语言的结构体,就算是要描述一只猫,也不怕了。

小结到这里,相信题主应该能发现C语言结构体的方便之处了。事实上,结构体的用处非常大,如果题主阅读我的文章,应该会发现,结构体和指针结合起来,简直“毁天灭地”,能够实现各种各样好玩的特性。

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

结构体是很重要的。char,int,long等都是固定的长度及确定的类型,结构体是按需要定制的类型,里面可以内嵌你需要的东西,控制起来更灵活也更方便。其实就是对象的思想,要慢慢体会它的用法。更高级语言里的class是结构体进一步进化,功能更完善。可以说如果没有结构体,那么复杂程序看上去将一塌糊涂,枯燥无味。

扫描二维码推送至手机访问。

版权声明:本文由PPT写作技巧发布,如需转载请注明出处。

本文链接:http://www.ppt3000.com/post/62669.html

分享给朋友:

相关文章

高一数学错题整理的办法

高一数学错题整理的办法

整理错题是一个长期积累并坚持的过程,希望同学们重视自己的错题,坚持下去。下面给大家分享一些关于 高一数学 错题整理的办法,希望对大家有所帮助。 高一数学错题整理的办法 一、错题整理须分类 错题整理可以按照高中数学的模块对应...

如何有效运用课件进行科学教?

如何有效运用课件进行科学教?

多媒体课件的恰当运用,在教学中给传统的小学科学教学增添了无穷的魅力。然而,如果过多地运用多媒体教学,就会喧宾夺主,违背了多媒体“辅助”教学的宗旨,使课堂教学流于形式。如何在科学课堂中恰如其分地使用好多媒体课件呢?本文从分析小学科学课堂教学中...

专科地理科学学什么?

专科地理科学学什么?

1地理科学专业学习课程 主干学科:地理学 主要课程:自然地理学、现代地貌学、环境演变、经济地理学、人文地理学、计量地理学、测量地图学、地理信息系统、区域地理等。 主要实践性教学环节:包括室内与野外实习、生产实习和毕业论文,一般安排l0...

八年级物理 摩擦力

八年级物理 摩擦力

物体做匀速直线运动 一定不受力 或 受力平衡 所以 摩擦力=拉力 物体会运动是由于惯性 如果拉力大于摩擦力 物体是向拉力方向加速运动的...

小学生有什么搞笑行为?

小学生有什么搞笑行为?

01儿子:“爸,你真有眼光!找到一个那么好的老婆,会洗衣,会做饭,做家务,脾气又好,人还特别漂亮!” 父亲:“没办法人太帅了!” 儿子:“妈,你就没那么有眼光了!瞧你找了个什么玩意儿!” 02儿子:“爸,我真希望有一天,当我拖着疲惫的身体回...

急求小学一年级教案

急求小学一年级教案

http://www.zhaojiaoan.com/soft/show.asp?id=8413小学信息技术一上全册备课资料[小学信息技术教案]抚顺信息技术市编教材小学一年级上册教参第1课认识新朋友一、教学目标1、认识计算机的部分设备名称:...