一,前言
结构体(结构),它是一种构造类型,可以简单理解为是一个'框架',由若干个成员组成,而这些成员可以是一个基本的数据类型,又或者是另一个结构体。用户创建一个结构体,等同于创建一个'小型数据库'。
如:学户数量(int),姓名(char),期末成绩(浮动)等。在接下来的实现中,当想要使用其中的某个,可以轻松的从结构体中把它调用出来。
结构体的好处是可以对一些信息进行整体管理操作,使程序变得更有结构感。有了结构体,开发者就可以更好的描述一个类别。
定义一个 '花店',把你拥有的 '鲜花' 放到里面。这就是你的一个结构体。(是不是有点像类的定义)
二,讲解
1.结构体(结构)定义与引用。
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。
①。原型一:
//定义
struct 结构体名称{
数据类型 member1;
数据类型 member2;
};
//声明
struct 结构体名称 结构体变量名
实例:
//定义
struct Student{
int num;
char name[10];
};
//声明
struct Student stu;
②。原型二:
此原型中,有两种声明方法可以选择。
//定义
typedef struct 结构体名称{
数据类型 member1;
数据类型 member2;
} 结构体名称别名;
//声明
struct 结构体名称 构体变量名
或
结构体名称别名 结构体变量名
实例:
//定义
typedef struct Student{
int num;
char name[10];
}Stu;
//声明
struct Student stu;
或
Stu stu;
③原型三:
//定义+声明
struct 结构体名称{
数据类型 member1;
数据类型 member2;
} 结构体变量名;
实例:
//定义+声明
struct Student{
int num;
char name[10];
}stu; //此处stu 是变量名
④原型四:
此种方法声明的结构体叫匿名结构体。
//定义+声明
struct {
数据类型 member1;
数据类型 member2;
}结构体变量名;
实例:
//定义+生命
struct {
int num;
char name[10];
}stu,stu1; //匿名结构体,同时定义了2个结构体变量
2.完整工程实例
此工程中包括复合结构体,简单理解为:一个结构体调用了另一个结构体。
#include<iostream>
using namespace std;
struct Date{ //声明一个结构体类型Date
int year;
int month;
int day;
};
struct Student{ //声明一个结构体类型Student
int num;
char name[20];
char sex;
int age;
Date birthday;
float score;
char addr[30];
};
int main(){
Student one={001,"ANan,'m',19,1995,06,27,100,"Beijing"};
cout<<one.num<<endl;
cout<<one.name<<endl;
cout<<one.sex<<endl;
cout<<one.age<<endl;
cout<<one.birthday.year<<"/"<<one.birthday.month<<"/"<<one.birthday.day<<endl;
cout<<one.score<<endl;
cout<<one.addr<<endl;
return 0;
}
三。总结
- 结构体与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。
- 对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于同类型的普通变量。
- 结构体的成员也可以是一个结构体变量。