0
点赞
收藏
分享

微信扫一扫

C语言,结构体

大雁f 2022-01-28 阅读 150

一月二十七日记录。

先前所介绍的都是基本类型,如int,还有构造类型,如数组。

但是在某些情况下,基本类型不能满足我们的需求。此时,我们可以将一些有关的变量组织起来,并定义成一个结构,以此来表示一个有机的整体或一种新的类型。然后程序就可以像处理内部的基本数据那样,对结构进行操作。

结构体类型的概念与声明

结构体是一种构造类型,它是由若干成员组成的。这些成员可以是一个基本数据类型,如char,也可以是一个构造类型,如数组。

正如结构体的类型一样,在使用它之前我们需要对其进行构造,这个操作称为声明一个结构体。

关键字struct表示声明结构,其后的结构体名代表该结构的类型名,大括号中的变量构成结构的成员。

结构体变量的定义

关键字struct构造了一个新的类型结构,然后我们要使用这个结构,这时候就要定义变量。

定义结构体变量的方式有三种:

需要注意的是:

1、结构体的类型与变量是两个概念。变量可以赋值,类型不行。如:可以用int类型定义一个a变量,然后对a赋值,但是不可以对int赋值。在编译时,对类型不分配内存空间,只对变量分配内存空间。

2、结构体成员也可以是结构体类型的变量。(嵌套)

3、使用第一个方式定义变量时,定义时的struct可省略不写。

上述代码先声明了一个Project和Project_v的结构体类型,并定义了一个结构体变量Final。然后在第二个结构体类型中有一个成员是第一个结构体类型。

结构体变量的引用

当我们定义一个结构体变量后,就可以对其进行引用。但我们不能针对一个结构体的整体进行操作,而应该是针对其成员进行操作。

引用的时候我们使用了结构体变量名后加上一个成员运算符“ . ”和成员名字,然后就能对该结构体中的该成员进行操作。

如果结构体的成员也属于一个结构体类型,在引用时就要使用若干个成员运算符,一级一级地找到最低一级的成员,并且我们只能对最低级的成员进行操作。

注意:成员运算符的优先级最高。

当我们需要使用引用地址时,结构体变量和结构体成员的地址都可以进行引用。

结构体的初始化

结构体类型与其他基本类型一样,可以在定义结构体变量时指定初始值。

这样就可以快速初始化一个结构体变量。

结构体数组

定义一个结构体数组的方式与定义结构体变量的方式相同,只是结构体变量换成数组而已。

结构体数组的初始化

类比于“结构体的初始化”。

结构体指针

一个指向变量的指针表示的是该变量所占内存的起始地址。如果一个指针指向结构体变量,那么该指针指向的就是该结构体变量的起始地址。同样,结构体指针变量也可以指向结构体数组中的元素。

在引用时需要加括号,否则会先计算点运算符后计算“ * ”,因为成员运算符优先级特别高。

指针引用结构体变量成员也可以用指向运算符"->"

综上:在引用结构体变量的成员时,我们有三种方式:

指向结构体数组的指针

使用时并无大异。

结构体作为函数参数

函数是由参数的,可以将结构体变量的值作为一个函数的参数。

使用结构体作为函数的参数有三种方式:

1、使用结构体变量作为函数参数

2、使用指向结构体变量的指针作为函数参数

3、使用结构体变量的成员作为函数参数

todo

举报

相关推荐

0 条评论