今天我要说的还是非标准数据类型——struct(结构体)。
还是一样,先复习旧的知识:
基本数据类型:
整型 int / long / long long
布尔型 bool
字符型 char
实型
→ 单精度型 / 浮点型 float
→ 双精度型 double
…
非基本数据类型:
数组 [ ]
指针 *
空类型 void
结构体 struct √
联合体 union √
枚举 enum √
类 class √
…
众嗦周知,struct(结构体)是每个C++爱好者必学的基础知识
1、 struct简介:
在C++中,struct是一种用户自定义的数据类型,用于封装零个或多个不同类型的数据成员。它类似于类(class),但与类不同的是它默认的成员访问权限是public的。
struct可以用来组织相关的数据成员,使其在一个结构体中形成一个单独的实体。结构体中的数据成员可以是不同类型的,例如整型、浮点型、字符型、数组等。
struct的定义形式如下:
struct 结构体名 {
数据类型1 成员名1;
数据类型2 成员名2;
…
};
例如,下面是一个表示学生信息的结构体的定义:
struct Student {
int id;
string name;
float score;
};
在上面的例子中,Student是结构体的名称。它包含了三个数据成员:id、name和score。
可以通过结构体名加成员名的方式访问结构体中的数据成员,例如:
Student s;
s.id = 1001;
s.name = “Tom”;
s.score = 95.5;
结构体还可以作为函数的参数和返回值,从而实现更灵活的数据传递和处理。
总而言之,struct是C++中用于定义自定义数据类型的一种机制,它允许我们将不同类型的数据成员组织在一起,以便更方便地进行数据操作和管理。
2、struct应用:
struct是一种在C++中定义和组织数据的方式。它允许开发者定义一个包含多个不同数据类型的组合数据类型,并可以根据需求自由添加或删除成员。
最常见的用途是定义一个包含相关属性的数据结构。例如,可以使用struct来定义一个表示学生的数据结构,其中包含学生的姓名、年龄、性别等属性。
示例代码如下:
#include <stdio.h>
struct Student {
char name[20];
int age;
char gender;
};
int main() {
struct Student student1;
// 设置学生的属性
strcpy(student1.name, "John");
student1.age = 20;
student1.gender = 'M';
// 输出学生的属性
printf("Name: %s\n", student1.name);
printf("Age: %d\n", student1.age);
printf("Gender: %c\n", student1.gender);
return 0;
}
在上面的示例中,我们定义了一个名为Student的struct,其中包含了三个成员变量:name、age和gender。然后,在main函数中,我们创建了一个struct Student类型的变量student1,并设置了它的属性值。最后,我们使用printf函数输出了学生的属性。
除了定义属性,struct还可以嵌套使用。这样一来,就可以将不同的数据结构组合在一起,形成更复杂的数据类型。这种嵌套使用可以更好地表示现实世界中的复杂关系。
struct还可以作为函数参数和返回值使用,从而方便地传递和操作复杂的数据类型。
总而言之,struct在C++中的应用非常广泛,可以用来定义各种复杂的数据结构,提高代码的可读性和可维护性。
3、struct示例代码:
以下是一个简单的C++结构体示例代码:
#include <iostream>
struct Person {
std::string name;
int age;
std::string city;
};
int main() {
Person person1; // 创建一个Person结构体对象
// 设置结构体成员的值
person1.name = "John Doe";
person1.age = 25;
person1.city = "New York";
// 打印结构体成员的值
std::cout << "Name: " << person1.name << std::endl;
std::cout << "Age: " << person1.age << std::endl;
std::cout << "City: " << person1.city << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为Person
的结构体,它具有三个成员变量:name
,age
和city
。然后,在main
函数中,我们创建了一个Person
对象person1
并设置了其成员变量的值。最后,我们使用std::cout
打印了结构体成员的值。
此代码将输出:
Name: John Doe
Age: 25
City: New York
这是一个简单的示例,演示了如何在C++中使用结构体。结构体可以用来组织相关的数据,并以更复杂的方式进行操作和使用。
4、struct的深究和使用注意事项:
深究struct:
在C++中,struct是一种用户自定义的数据类型,用于组织相关的数据项。它类似于类(class),但与类不同的是,struct的默认访问权限是公共的(public),而类的默认访问权限是私有的(private)。
struct可以包含成员变量(也称为数据成员)和成员函数(也称为成员方法)。它可以用来表示某个实体的特征和行为。
下面是一些关于struct的使用注意事项:
- 结构体的定义:struct的定义可以放在全局范围内,也可以放在类的内部。在全局范围内定义的结构体可以直接使用,而在类的内部定义的结构体需要通过类名加上作用域运算符(::)来访问。
- 成员变量的访问:结构体的成员变量可以通过结构体对象的成员访问操作符(.)来访问。同时,也可以使用指向结构体对象的指针来访问成员变量,使用指针的成员访问运算符(->)。
- 成员函数的定义:结构体可以包含成员函数,这些函数可以在结构体内部定义,也可以在外部定义。在结构体内部定义的成员函数可以直接使用结构体的成员变量,而在外部定义的成员函数需要使用结构体对象的成员访问操作符(.)或指针的成员访问运算符(->)来访问成员变量。
- 结构体的大小:结构体的大小取决于其成员变量的大小和对齐规则。C++中的结构体对齐是根据特定的对齐规则来决定的,以确保结构体的成员变量以最高效的方式存储在内存中。
- 结构体的初始化:可以使用初始化列表来初始化结构体的成员变量。在创建结构体对象时,可以通过大括号初始化列表来为成员变量赋值,也可以在定义结构体的同时进行赋值。
- 结构体的传递:可以将结构体作为参数传递给函数,也可以将结构体作为返回值返回。传递结构体时,可以通过值传递或引用传递的方式进行。