C++ 结构体
在 C++ 中,结构体(struct)指的是一种数据结构,是 C++ 中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体的意义
我们知道,C++ 中的数组可以存储多个相同类型的数据,但它无法存储不同类型的数据,比如:
int a[4];
a[0] = 1;
a[1] = 2;
a[2] = 3.14; // 错误,类型不同
a[3] = "Hello"; // 错误,类型不同
如果我们要定义一本书的标题、作者、分类、出版时间、书号(ISBN),一般会怎么做呢?
char* title;
char* author;
char* category;
int isbn;
如果有很多书, 那么可能会这样做:
char* title_1;
char* author_1;
char* category_1;
int isbn_1;
char* title_2;
char* author_2;
char* category_2;
int isbn_2;
变量个数 = 书本的数量 x 4,想象下有 100 本,那将有 400 个变量。当然了,还有优化的余地,比如说用数组:
char* title[100];
char* author[100];
char* category[100];
int isbn[100];
是不是感觉很别扭?填充的时候万一开了个小差,数据就全乱了,难道就不能这样子:
Book = {
char* title;
char* author;
char* category;
int isbn;
}
把它们放在一起,然后取个名字 Book
,然后在创建一个数组:
Book book[100];
没错,结构体(struct
)就因此而诞生了!
结构体是 C++ 中另一种用户自定义的可用的数据类型,允许存储不同类型的数据项。我们可以理解为,结构体就是一些元素的集合,而这些元素称为结构体的成员(member),这些成员的类型可以相同,也可以不同,成员一般用名字访问。