C语言基础教程之结构体

C语言 结构体

C语言基础教程之结构体_第1张图片
更多C/C++资料下载,C/C++学习乐园:747821062


C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构体说的通俗一点就是给基本数据成员的一种封装,打包。数组是相同类型的数组,结构体可以是不同类型的数据组成的数组。

C语言基础教程之结构体_第2张图片
更多C/C++资料下载,C/C++学习乐园:747821062


定义结构体

为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:

C语言基础教程之结构体_第3张图片
更多C/C++资料下载,C/C++学习乐园:747821062


sturctName: 是结构体名。

dataType:数据类型,int,char,float,double,甚至更复杂的

dataName:变量名

其他形态

1.没有结构体名,只有结构体变量。

C语言基础教程之结构体_第4张图片

2.与typedef的基情

C语言基础教程之结构体_第5张图片
更多C/C++资料下载,C/C++学习乐园:747821062

访问结构成员

结构体中的成员只能通过结构体变量去访问,就像男生只能去男厕所,女生去女厕所一样。为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用 struct 关键字来定义结构类型的变量。下面的实例演示了结构的用法:

C语言基础教程之结构体_第6张图片

主函数少了个返回值,手误,勿吐槽,心里明白就行。

结构体指针

C语言基础教程之结构体_第7张图片
更多C/C++资料下载,C/C++学习乐园:747821062  

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如:struct Books *struct_pointer;现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如:struct_pointer = &Book1;为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如:struct_pointer->title;具体代码如下图所示:

C语言基础教程之结构体_第8张图片

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。

C语言基础教程之结构体_第9张图片

特殊结构体-位段(位域)

C语言基础教程之结构体_第10张图片
更多C/C++资料下载,C/C++学习乐园:747821062

位域:位域在本质上就是一种结构类型,不过其成员是按二进位分配的。

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。

所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。

典型的实例:

用 1 位二进位存放一个开关量时,只有 0 和 1 两种状态。

读取外部文件格式——可以读取非标准的文件格式。例如:9 位的整数。

1.定义语法

C语言基础教程之结构体_第11张图片

2.案列

C语言基础教程之结构体_第12张图片
更多C/C++资料下载,C/C++学习乐园:747821062

说明 data 为 bs 变量,共占两个字节。其中位域 a 占 8 位,位域 b 占 2 位,位域 c 占 6 位。

3.位段注意点

一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。

由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。如果最大长度大于计算机的整数字长,一些编译器可能会允许域的内存重叠,另外一些编译器可能会把大于一个域的部分存储在下一个字中。

位域可以是无名位域,这时它只用来作填充或调整位置。无名的位域是不能使用的。

使用方式上和结构体一样,就不过分举例说明了,好了今天的基础教程就到这里。快来夸赞下自己吧。

你可能感兴趣的:(C语言基础教程之结构体)