struct 结构体
文章目录
一、初识struct
什么是结构体类型?结构体类型是怎么样的?在许多程序中,所用的变量大多数是互相独立、无内在联系的。比如定义了整型变量x,y,z,它们都是单独存在的变量,在内存中的地址也是互不相干的,但在实际生活和工作中,有些数据是有内在联系的,成组出现的。比如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,是属于同一个学生的,可以看到性别(sex)、年龄(age)、成绩( score)、地址(addr)是属于学号为20202021和名为“ 小美”的学生的。如果将num、name、sex、age、 score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系。
人们希望把这些数据组成一个组合数据,例如定义一个名为 student1的变量,在这个变量中包括学生1的学号、姓名、性别、年龄、成绩、家庭地址等项。这样,使用起来就方便多了。
num | name | sex | age | score | addr |
---|---|---|---|---|---|
20202021 | 小美 | 女 | 20 | 98 | 深圳 |
针对这一问题,我们可以用一个叫做 “结构体” 的东西;
(定义)它允许建立由不同类型的数据组成的组合型的数据结构。
二、建立结构体类型:
struct student
{
int num;
char name[10];
char sex;
int age;
float score;
char addr[50];
}; //注意:后面一定要有分号
上面我们指定了一个结构体类型 struct student( struct是声明结构体类型时 所必须使用的关键字),它向编译系统说 : “ 我是一个“结构体类型” ,我包含num,name ,sex,age, score,adder 不同数据类型的成员。” 通过比较,这个方法和系统提供的标准类型(如int,char, float,double等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由自己根据需要在程序中指定的。
2.1 声明一个结构体类型的一般形式为:
struct + 结构体名
{成员列表};
上述的代码中,struct是结构体的关键字,student是自己起的结构体名,声明student就是结构体名。
{成员列表} 是该student结构体中所包含的“结构体成员” ,如num,name ,sex,age, score,adder ,对每个“成员”都进行了数据类型声明(int,char,float等)。
说明:结构体成员中可以包含结构体:
#include<stdio.h>
void main()
{
struct date // 声明一个结构体类型 struct Date
{
int month;
int day;
int year;
};
struct student
{
int num;
char name[10];
char sex;
int age;
struct date birthday; //成员 birthday属于 struct Date类型
char addr[50];
}; //注意:一定要有分号
}
意思表示这样:
三、定义结构体类型变量
前面只是建立了一个结构体类型,它相当于一个模型,并没有定义变量,里面并无具体数据,系统对之也不分配存储单元。相当于设计好了图纸,但并未建成具体的房屋。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据,可以采取以下3种方法定义结构体类型变量:
方法一:先声明结构体类型,再定义该类型的变量
struct student student1,student2;
结构体类型名 结构体变量名
student1:
202022 | 小明 | 男 | 20 | 97 | 广州 |
---|
student2:
202023 | 小白 | 男 | 20 | 96 | 珠海 |
---|
方法二:在声明类型的同时定义变量
struct student
{
int num;
char name[