C++ 结构示例
什么是结构体 C++?
A 结构体 是一个 C++ 可用于将不同数据类型的元素存储在一起的数据结构。 C++,结构是一种用户定义的数据类型。结构创建一种数据类型,用于将不同数据类型的项目分组到单一数据类型下。
例如:
假设您需要存储某人的姓名、国籍和年龄等信息。您可以创建姓名、国籍和年龄等变量来分别存储数据。
但是,将来您可能需要存储许多人的信息。这意味着将为不同的个人创建变量。例如,name1、citizenship1、age1 等。为了避免这种情况,最好创建一个结构体。
何时使用结构?
以下是使用结构的一些原因 C++.
- 当您需要将不同数据类型的元素存储在一种数据类型下时,请使用结构体。
- C++ 结构体是值类型,而不是引用类型。如果您不打算在创建后修改数据,请使用结构体。
C++ 结构初始化
要创建 C++ 结构,我们使用 struct 关键字,后跟标识符。标识符成为结构的名称。以下是创建结构体的语法 C++ 结构:
语法:
struct struct_name { // struct members }
在上面的语法中,我们使用了 struct 关键字。struct_name 是结构的名称。
结构成员添加在花括号内。这些成员可能属于不同的数据类型。
例如:
struct Person { char name[30]; int citizenship; int age; }
上面的例子中,Person 是一个结构体,有三个成员,分别是 name、citizenship 和 age,其中一个成员是 char 类型,其余两个是整型,创建结构体时不会分配内存,只有将变量添加到结构体后才会分配内存。
创建结构体实例
在上面的例子中,我们创建了一个名为 Person 的结构体。我们可以创建一个结构体变量,如下所示:
Person p;
p 是 Person 类型的结构变量。我们可以使用此变量来访问结构的成员。
访问结构体成员
要访问结构体成员,我们使用结构体的实例和点 (.) 运算符。例如,要访问结构体 Person 的成员 age:
p.age = 27;
我们使用结构体的实例 p 访问了 Person 结构体的成员 age。然后我们将成员 age 的值设置为 27。
例如1:
#include <iostream> using namespace std; struct Person { int citizenship; int age; }; int main(void) { struct Person p; p.citizenship = 1; p.age = 27; cout << "Person citizenship: " << p.citizenship << endl; cout << "Person age: " << p.age << endl; return 0; }
输出:
以下是代码截图:
代码说明:
- 在我们的程序中包含 iostream 头文件以使用其中定义的函数。
- 包含 std 命名空间以便使用其类而不调用它。
- 创建一个名为 Person 的结构。
- 结构体的开始。
- 创建一个名为citizenship、类型为整数的结构成员。
- 创建一个名为age的整型结构成员。
- 结构体结束。
- 调用 main() 函数。程序逻辑应添加在此函数主体内。
- 创建结构 Person 的一个实例并将其命名为 p。
- 将结构成员 citizenship 的值设置为 1。
- 将结构成员age的值设置为27。
- 将结构成员公民身份的值与其他文本一起打印在控制台上。
- 将结构成员 age 的值与其他文本一起打印在控制台上。
- 如果程序运行成功,它应该返回一个值。
- main() 函数结束。
结构指针
可以创建指向结构的指针。它类似于指向 int、float、double 等本机数据类型的指针的创建方式。请注意, C++ 将存储一个记忆位置。
例如2:
#include <iostream> using namespace std; struct Length { int meters; float centimeters; }; int main() { Length *ptr, l; ptr = &l; cout << "Enter meters: "; cin >> (*ptr).meters; cout << "Enter centimeters: "; cin >> (*ptr).centimeters; cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters"; return 0; }
输出:
以下是代码截图:
代码说明:
- 在我们的程序中包含iostream头文件以便使用它的功能。
- 在我们的程序中包含 std 命名空间,以便使用它的类而不调用它。
- 创建一个名为 Length 的结构。
- 结构长度主体的开始。
- 创建一个名为 meter 的整型数据类型的结构成员。
- 创建一个名为 centimeters 的整数类型的结构成员。
- 结构长度主体的结束。
- 调用 main() 函数。
- main() 函数主体的开始。
- 创建一个Length类型的指针变量*ptr和普通变量l。
- 将变量 l 的地址存储在我们的 指针变量.
- 在控制台上显示一条消息,要求用户输入变量仪表的值。
- 读取用户通过键盘输入的值。这里使用指针变量访问成员函数 meter。
- 在控制台上显示一条消息,要求用户输入变量厘米的值。
- 读取用户通过键盘输入的值。这里使用指针变量访问成员函数 centimeters。
- 将从用户读取的值与其他文本一起显示在控制台上。
- 程序执行成功后必须返回一个值。
- main() 函数体结束。
结构体作为函数参数
您可以将结构体作为参数传递给函数。这与传递普通参数的方式相同。结构体变量也可以传递给函数。一个很好的例子是当您需要显示结构体成员的值时。让我们演示一下:
例如3:
#include<iostream> using namespace std; struct Person { int citizenship; int age; }; void func(struct Person p); int main() { struct Person p; p.citizenship = 1; p.age = 27; func(p); return 0; } void func(struct Person p) { cout << " Person citizenship: " << p.citizenship<<endl; cout << " Person age: " << p.age; }
输出:
以下是代码截图:
代码说明:
- 将 iostream 头文件包含到我们的文件中。然后我们将使用它的函数而不会出现错误。
- 在我们的程序中包含 std 命名空间以使用其类。我们不需要调用命名空间来使用其类。
- 创建一个名为 Person 的结构。
- Person 结构体主体的开始。
- 创建 Person 结构的一个成员。该成员名为 citizenship,类型为整型。
- 创建 Person 结构体的一个成员,该成员名为 age,类型为整型。
- Person 结构体主体的结束。
- 创建一个以结构 Person 的实例 p 作为参数的函数。
- 调用 main 函数。{ 标记 main() 函数体的开始。
- 创建结构 Person 的一个实例并将其命名为 p。
- 使用结构体实例 p 访问结构体成员变量 citizenship,并为其赋值 1。
- 使用结构体实例 p 访问结构体成员变量 age,并为其赋值 27。
- 调用该函数并将结构 Person 的实例 p 作为参数传递给它。
- 函数执行成功后必须返回一个值。
- main() 函数体结束。
- 创建函数主体。
- 函数主体的开始。
- 访问结构成员公民身份值并将其与其他文本一起打印在控制台上。
- 访问结构成员年龄值并将其与其他文本一起打印在控制台上。
- 函数体结束。
限制 C++ 结构体
以下是结构的局限性:
- 结构数据类型不能被视为内置数据类型。
- Opera不能用在 + - 等 结构变量.
- 结构不支持数据隐藏。结构的成员可以被任何函数访问,无论其范围如何。
- 静态成员不能在结构体内声明。
- 不能在结构内部创建构造函数。
总结
- 结构是一种存储属于不同类型的数据元素的数据结构。
- 数组存储相似类型的数据元素,而结构存储不同类型的数据元素。
- 当预计数据元素的值不会改变时,应该使用结构。
- 使用点(.)运算符访问结构的成员。
- 我们必须创建该结构的实例。
- 要创建 C++ 结构,我们使用struct关键字。
- 指向结构体的指针的创建方式与指向常规类型的指针的创建方式类似。
- 结构体可以作为参数传递给函数,方式与传递普通函数相同。