1. 为什么要使用“结构”(结构体)
- 当需要表示一些复杂信息时,使用单纯的数据类型很不方便。
比如:学生信息(学号,姓名,班级,电话,年龄)
2. 什么是“结构”
- 结构,就是程序员自定义的一种“数据类型”
- 是使用多个基本数据类型、或者其他结构,组合而成的一种新的“数据类型”。
3. 结构的定义
特别注意:
1)要以 struct 开头
2)最后要使用分号
3)各成员之间用分号隔开
struct 结构名 {
成员类型 成员名;
成员类型 成员名;
};
//实例
struct student {
char name[16];
int age;
char tel[12];
};
3. 结构体初始化
#include <iostream>
#include <Windows.h>
using namespace std;
//结构体, 就是程序员自己定义的一个 "数据类型"
struct student {
char name[32];
int age;
};
//一个结构体中包含结构体
//可以不断的进行嵌套
struct class_s {
struct student s1; //学生1
struct student s2; //学生2
};
int main(void) {
//未初始化的结构体
struct student a1;
//方式一, 初始化结构体的所有属性
struct student a2 = { "小黑", 18 };
cout << "姓名: " << a2.name << "\t年龄: " << a2.age << endl;
//结构体之间可以直接赋值
//a1 = a2;
//方式二, 初始化结构体的指定属性, 此方式在 gcc 中是支持的
//struct student a1 = { .name = "小白", .age = 19 }; //此方式在 VC++ 和 VS 中不支持
//方式三, 单独初始化每一个属性
strcpy_s(a1.name, 5, "小白");
a1.age = 19;
cout << "姓名: " << a1.name << "\t年龄: " << a1.age << endl;
//结构体中含有结构体
struct class_s c1 = { { "小黑", 18}, { "小白", 19} };
//访问c1班第一个学生
cout << "c1班学生1姓名: " << c1.s1.name << "\t年龄: " << c1.s1.age << endl;
cout << "c1班学生2姓名: " << c1.s2.name << "\t年龄: " << c1.s2.age << endl;
system("pause");
return 0;
}