C语言自定义类型之结构体
前言
上一章节主要讲解的是指针的动态内存申请,三个申请函数,realloc,malloc,calloc。本章节主要是针对于结构体类型做个讲解。剩下的两种自定义类型,联合体和枚举类型下个章节做介绍。
C语言结构体
在C语言中,结构体是不同数据类型的元素的集合。该结构用于使用C语言创建用户定义的数据类型。作为用于创建用户定义的数据类型的结构,该结构也被称为“ C语言中的用户定义的数据类型”。换句话说,结构是不均匀元素的集合。使用结构,我们可以定义称为用户定义数据类型的新数据类型,该数据类型包含不同数据类型的多个值。结构体的正式定义:结构体是单一名称下不同类型元素的集合,它充当C中用户定义的数据类型。
通常结构体用于定义c编程语言中的记录。结构体使我们能够将不同数据类型的元素组合成一个组。结构体中定义的元素称为结构成员。
如何创建结构体
要在c语言中创建结构体,我们使用名为“ struct ” 的关键字。我们使用以下语法以c编程语言创建结构体。
以下是创建称为student的结构的示例,该结构用于保存学生记录。
注意点
每个结构都必须以分号(;)终止。
“ struct”是一个关键字,必须仅使用小写字母。
结构体变量创建
在编程语言中,有两种创建结构变量的方法。我们可以在定义结构的同时创建结构变量,也可以在使用struct关键字终止结构后创建。
要使用结构变量访问结构的成员,我们使用点(.)运算符。考虑以下示例代码
每当我们用结构体变量访问结构的成员时,我们都使用点(.)运算符。即:结构体变量.成员方式.
注意点
一个结构的所有成员可以同时使用。
在创建结构变量之前,不会分配任何内存。
结构体数组
对于结构体数组,我们先回想一下整型数组,例如我们要统计咱们班30个人的姓名,学号 ,成绩,如果我们用结构体变量来实现是不现实的。那么我们就准备用结构体数组来完成这事。结构体数组就是同一类型的结构体变量的集合,内存分布上是连续的。一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据.如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组(如果定义10个结构体变量太麻烦了)结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员。
结构体指针
前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。那么,这个指针变量定义成什么类型呢?只能定义成结构体类型,且指向什么结构体类型的结构体变量,就要定义成什么样的结构体类型。比如指向 struct student 类型的结构体变量,那么指针变量就一定要定义成 struct student* 类型。
我们看到,用指针引用结构体变量成员的方式是:
(*指针变量名).成员名
指针变量名->成员名
它们是等价的。“->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。
注意点
只有“指针变量名”后面才能加“->”,千万不要在成员名后面加“->”。综上所述,以下 3 种形式是等价的:
结构体变量.成员名。
(*指针变量).成员名。
指针变量->成员名。
其中第 3 种方式很重要,通常都是使用这种方式,另外两种方式用得不多。后面讲链表的时候用的也都是第 3 种方式。
尾言
专栏作业:定义结构体,描述以下表格数据。
不要否定你的过去,也不要用过去牵扯你的未来。不是因为有希望才去努力,而是努力了,才能看到希望。