C语言怎么链接两个孤单的结构体变量

本篇内容介绍了“C语言怎么链接两个孤单的结构体变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站公司2013年成立,先为泰山等服务建站,泰山等地企业,进行企业商务咨询服务。为泰山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

首先我们需要知道的就是,结构体指针是可以作为一个结构体类型的内部成员变量的。假设我们有一个student_t结构类型,其内部是可以包含一个用其本身定义的一个结构体变量的。如图1所示。

 C语言怎么链接两个孤单的结构体变量
图1在定义结构体时,加入一个其自身类型的结构体指针

如图1所示,我们在使用typedef定义结构体存储类型的时候,可以将结构体的标签选项保留下来。这个标签在定义指向这种类型的结构体指针的时候,可以和struct联合起来定义。
好了,我们现在已经定义好了一个student_t类型的结构体了,这个结构体有一个最显著的特点,就是它的成员变量里面包含了一个可以指向它自己(student_t)类型的结构体指针。
这里就有个假设了。假设小明和小丽是一个班上的学生,我们可以分别定义两个结构体变量用来存放他们的名字和年龄,如图2所示。

C语言怎么链接两个孤单的结构体变量
图2 打印小明和小丽的信息

现在我们可以再想一下,如果我们要建立起来一个关系,即坐在小明后面的那个同学,她的名字叫做小丽,换句话说,就是能否找到一种关系,将小丽的信息通过小明这个同学去找到。答案是可以的,我们看到,用来描述小明的结构体里面还包含了一个结构体指针*next,由于用于描述小明和小丽的结构体类型是完全一致的,因此*next指针是可以指向小丽结构体的。如图3所示。

C语言怎么链接两个孤单的结构体变量
图3 next结构体指针指向另一个结构体变量

而这个指针的指向操作,我们可以使用代码来实现,只需要将XiaoLi结构体的首地址赋值给Xiaoming.next即可。这样操作之后,Xiaoming的next指针就指向了XiaoLi了,此时我们可以很简单地通过小明去查询到XiaoLi的相关信息。这里需要注意的是,Xiaoming.next是一个结构体指针,因此在使用Xiaoming结构体查询XiaoLi的信息时,需要使用Xiaoming.next的指向操作,即Xiaoming.next->name,和Xiaoming.next->age。具体代码如图4所示。

C语言怎么链接两个孤单的结构体变量
图4 利用next指针打印后一个结构体变量的信息

现在我们再将这些信息扩大一些,假设Xiaoming和XiaoLi这个小组里面又加入了两个小伙伴,分别叫做MaLi和JieKe。那我们也可以使用同样的方式将MaLi和JieKe的信息存储下来,并且使用next指针将他们的信息一个一个地“串联起来”。如图5所示。

C语言怎么链接两个孤单的结构体变量
图5 利用小明打印出所有学生的信息

上述的printf函数在写起程序来还是比较麻烦的,我们需要为这四个同学写出四个不同的printf函数,如果学生的数量到了100个,还要写100个printf?那么有没有办法只写出一个printf,就能将整个这种连接到一起的结构体的信息都打印出来呢?答案又是肯定的,我们再来反观一下现在这几个结构体的关系。如图6所示。

C语言怎么链接两个孤单的结构体变量
图6四个结构体之间的关系

如果要可以满足只用一句printf就可以将这四个或者以后的多个结构体的信息全部打印出来,我们联想到学习数组的时候,有一种被称为数组遍历的操作与之类似。我们仔细观察这几个结构体,我们很容易找到一个判断条件,最后一个结构体的next指针势必会指向NULL。因此利用这一点,我们可以定义一个student_t的结构体指针seek,先指向第一个结构体变量,输出完成后,指向第二个结构体变量,即将第一个的next指针赋给这个seek指针,以此类推。当最后一个next赋给seek指针的时候,seek指针的值势必为NULL,因此可以退出整个循环。具体代码如图7所示。

C语言怎么链接两个孤单的结构体变量
图7 seek指针变量这四个结构体变量

“C语言怎么链接两个孤单的结构体变量”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

网站名称:C语言怎么链接两个孤单的结构体变量
链接分享:https://www.cdcxhl.com/article0/gsgsoo.html

成都网站建设公司_创新互联,为您提供做网站网站设计营销型网站建设小程序开发软件开发网站改版

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司