C语言自定义类型之结构体

共 1546字,需浏览 4分钟

 ·

2021-01-12 18:26

前言

上一章节主要讲解的是指针的动态内存申请,三个申请函数,realloc,malloc,calloc。本章节主要是针对于结构体类型做个讲解。剩下的两种自定义类型,联合体和枚举类型下个章节做介绍。

C语言结构体

在C语言中,结构体是不同数据类型的元素的集合。该结构用于使用C语言创建用户定义的数据类型。作为用于创建用户定义的数据类型的结构,该结构也被称为“ C语言中的用户定义的数据类型”。换句话说,结构是不均匀元素的集合。使用结构,我们可以定义称为用户定义数据类型的新数据类型,该数据类型包含不同数据类型的多个值。结构体的正式定义:结构体是单一名称下不同类型元素的集合,它充当C中用户定义的数据类型。

通常结构体用于定义c编程语言中的记录。结构体使我们能够将不同数据类型的元素组合成一个组。结构体中定义的元素称为结构成员。

如何创建结构体

要在c语言中创建结构体,我们使用名为“ struct ” 的关键字。我们使用以下语法以c编程语言创建结构体。

以下是创建称为student的结构的示例,该结构用于保存学生记录。

注意点

  1. 每个结构都必须以分号(;)终止。

  2. “ struct”是一个关键字,必须仅使用小写字母。

结构体变量创建

在编程语言中,有两种创建结构变量的方法。我们可以在定义结构的同时创建结构变量,也可以在使用struct关键字终止结构后创建。

要使用结构变量访问结构的成员,我们使用点(.)运算符。考虑以下示例代码

每当我们用结构体变量访问结构的成员时,我们都使用点(.)运算符。即:结构体变量.成员方式.

注意点

  1. 一个结构的所有成员可以同时使用。

  2. 在创建结构变量之前,不会分配任何内存。

结构体数组

对于结构体数组,我们先回想一下整型数组,例如我们要统计咱们班30个人的姓名,学号 ,成绩,如果我们用结构体变量来实现是不现实的。那么我们就准备用结构体数组来完成这事。结构体数组就是同一类型的结构体变量的集合,内存分布上是连续的。一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据.如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组(如果定义10个结构体变量太麻烦了)结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员。

结构体指针

前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。那么,这个指针变量定义成什么类型呢?只能定义成结构体类型,且指向什么结构体类型的结构体变量,就要定义成什么样的结构体类型。比如指向 struct student 类型的结构体变量,那么指针变量就一定要定义成 struct student* 类型。

我们看到,用指针引用结构体变量成员的方式是:

  1. (*指针变量名).成员名

  2. 指针变量名->成员名

它们是等价的。“->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。

注意点

只有“指针变量名”后面才能加“->”,千万不要在成员名后面加“->”。综上所述,以下 3 种形式是等价的:

  1. 结构体变量.成员名。

  2. (*指针变量).成员名。

  3. 指针变量->成员名。

其中第 3 种方式很重要,通常都是使用这种方式,另外两种方式用得不多。后面讲链表的时候用的也都是第 3 种方式。

尾言

专栏作业:定义结构体,描述以下表格数据。

不要否定你的过去,也不要用过去牵扯你的未来。不是因为有希望才去努力,而是努力了,才能看到希望。


浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报