

所谓结构体数组,是指数组中的每个元素都是一个结构体。
在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
本质上就是数组,元素是结构体类型,定义了一堆结构体。
下面有2种定义结构体数组的方式
#include #include struct data { int num; float f1; char str[4];}//db[3]={{1,1.0,"jk"},{2,2.0,"jkj"}};//第一种db[3]={1,1.0,"jk",2,2.0,"jkj"};//第二种 但是匿名结构体这种方式不行void main(){ printf("\n%d",sizeof(struct data)); printf("%db",&db); printf("\n%x",&db[0]); printf("\n%x",&db[1]); printf("\n%x",&db[2]); //此处插入断点 //结构体数组在内存中是挨个挨个排列的 getchar();}第一种直接在结构体后面进行命名,这种方式也是我们最常用的方法。
第二种方法其实与第一种无异,但是在匿名结构体中不能使用这种方法。
指向结构体数组指针
一个结构体变量的指针就是该变量所占据的内存段的起始地址。
可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。
本质上,它就是指向数组的指针。
1、类型一:
指向结构体变量的指针引用结构体变量中的成员。
2、类型二:
用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。
链表中的每一个元素称为“结点”,每个结点都应包括两个部分:
一是用户需要用的实际数据,
二是下一个结点的地址。
链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。
可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。


本文部分内容出自百度本科
今天内容到此结束 以上内容有问题可以私信小编 欢迎大家添加微信号:“小南教育” 计算机等级考试资料9折起售!