C语言笔记初级篇第七章:结构体相关
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言笔记初级篇第七章:结构体相关相关的知识,希望对你有一定的参考价值。
目录
(1)结构体的声明,定义,初始化和成员访问
A:什么是结构体
世界上物体的性质是复杂多样的,就拿人而言,人绝对不能用一个整形数据(比如说身高),或者说字符串(比如说姓名)而单独囊括的,于是我们在描述一个复杂对象的时候,就要使用的结构体,结构体是一些值的集合,这些值称为成员变量,每个成员变量可以是不同的类型
B:结构体声明和定义
比如这里我们要描述一个学生,一个学生的信息主要包括姓名,年龄和学号组成
上述我们在main函数中通过,定义的struct Student 创建了一个结构体变量S,这样的创建方式属于局部变量
我们还可以直接在参数列表处直接定义,这样定义的就是全局变量
还有我们经常在数据结构中见到的一种写法,它其实相等于就是重新命了一个名字
C:结构体的初始化
第一点:普通初始化
第二点:嵌套初始化
结构体的成员可以是标量,数组,指针,甚至是其他结构体
D:成员访问
上述循环嵌套的访问方式如下
(2)结构体传参
结构体不能直接使用printf函数打印,需要打印时可以自己封装print函数,而这就涉及到了传参和传递地址的问题,结合前面第五章讲到的结构体指针的相关知识,就有以下两种打印方式
由于结构体的数据比较多,所以我们以后在操作时要传结构体的地址,如果传结构体的值那么对于内存的开销就比较大,如果传入地址,则只需使用一个很小的指针就能操作
(3)结构体自引用
这里以单链表结点定义为例。一个结构体有两个部分,一个部分是数据域,一个部分是指针域,在创造结点也就是建立结构体成员时,每个成员除了有一个数据域用来存放数据外还有一个指针域,在指针域里面存放的是一个地址,这个地址指向下一个结点也就是下一个结构体成员的内存地址
(4)内存对齐
(5)结构体传参
和前面说过的交换两个变量的经典例子一样,对结构体内的变量进行修改时需要传入地址,用结构体指针来接受,如果只是去使用结构体变量的值的话,就只传入值即可
(6)位段
具体参见
以上是关于C语言笔记初级篇第七章:结构体相关的主要内容,如果未能解决你的问题,请参考以下文章