C++ 结构示例

⚡ 智能摘要

结构中 C++ 是一种用户定义的数据类型,它将不同数据类型的元素组合在一个名称下,允许一个变量保存相关值,例如人名、国籍和年龄。

  • 📦 不同的数据类型: 结构体将不同类型的变量分组到一个用户定义的名称下。
  • ???? 结构体关键字: 使用 struct 关键字定义结构体,然后在花括号内列出成员。
  • 🧱 创建实例: 编写 Person p 会创建一个结构体变量并分配其内存。
  • 🎯 点运算符: 通过实例读取或设置任何成员,例如 p.age = 27。
  • ➡️ 指针和函数: 结构体使用指针,并像普通参数一样传递给函数。
  • 🤖 人工智能辅助: GitHub Copilot 和其他 AI 助手可以根据注释生成结构体定义和成员访问权限。

C++ 结构

什么是结构体 C++?

结构是 C++ 可用于将不同数据类型的元素存储在一起的数据结构。 C++结构体是一种用户自定义的数据类型。结构体为组创建数据类型。ping 同一数据类型下的不同数据类型项。

例如:

假设您需要存储某人的姓名、国籍和年龄等信息。您可以创建姓名、国籍和年龄等变量来分别存储数据。

然而,将来你可能需要存储很多人的信息。这意味着需要为不同的个体创建变量,例如 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;
}

输出:

访问结构体成员

以下是代码截图:

访问结构体成员

Code 说明:

  1. 在我们的程序中包含 iostream 头文件以使用其中定义的函数。
  2. 包含 std 命名空间以便使用其类而不调用它。
  3. 创建一个名为 Person 的结构。
  4. 结构体的开始。
  5. 创建一个名为citizenship、类型为整数的结构成员。
  6. 创建一个名为age的整型结构成员。
  7. 结构体结束。
  8. 调用 main() 函数。程序逻辑应添加在此函数主体内。
  9. 创建结构 Person 的一个实例并将其命名为 p。
  10. 将结构成员 citizenship 的值设置为 1。
  11. 将结构成员age的值设置为27。
  12. 将结构成员公民身份的值与其他文本一起打印在控制台上。
  13. 将结构成员 age 的值与其他文本一起打印在控制台上。
  14. 如果程序运行成功,它应该返回一个值。
  15. 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;
}

输出:

结构指针

以下是代码截图:

结构指针

Code 说明:

  1. 在我们的程序中包含iostream头文件以便使用它的功能。
  2. 在我们的程序中包含 std 命名空间,以便使用它的类而不调用它。
  3. 创建一个名为 Length 的结构。
  4. 结构长度主体的开始。
  5. 创建一个名为 meter 的整型数据类型的结构成员。
  6. 创建一个名为 centimeters 的整数类型的结构成员。
  7. 结构长度主体的结束。
  8. 调用 main() 函数。
  9. main() 函数主体的开始。
  10. 创建一个Length类型的指针变量*ptr和普通变量l。
  11. 将变量 l 的地址存储在我们的 指针变量.
  12. 在控制台上显示一条消息,要求用户输入变量仪表的值。
  13. 读取用户通过键盘输入的值。这里使用指针变量访问成员函数 meter。
  14. 在控制台上显示一条消息,要求用户输入变量厘米的值。
  15. 读取用户通过键盘输入的值。这里使用指针变量访问成员函数 centimeters。
  16. 将从用户读取的值与其他文本一起显示在控制台上。
  17. 程序执行成功后必须返回一个值。
  18. 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;
}

输出:

结构体作为函数参数

以下是代码截图:

结构体作为函数参数

Code 说明:

  1. 将 iostream 头文件包含到我们的文件中。然后我们将使用它的函数而不会出现错误。
  2. 在我们的程序中包含 std 命名空间以使用其类。我们不需要调用命名空间来使用其类。
  3. 创建一个名为 Person 的结构。
  4. Person 结构体主体的开始。
  5. 创建 Person 结构的一个成员。该成员名为 citizenship,类型为整型。
  6. 创建 Person 结构体的一个成员,该成员名为 age,类型为整型。
  7. Person 结构体主体的结束。
  8. 创建一个以结构 Person 的实例 p 作为参数的函数。
  9. 调用 main 函数。{ 标记 main() 函数体的开始。
  10. 创建结构 Person 的一个实例并将其命名为 p。
  11. 使用结构体实例 p 访问结构体成员变量 citizenship,并为其赋值 1。
  12. 使用结构体实例 p 访问结构体成员变量 age,并为其赋值 27。
  13. 调用该函数并将结构 Person 的实例 p 作为参数传递给它。
  14. 函数执行成功后必须返回一个值。
  15. main() 函数体结束。
  16. 创建函数主体。
  17. 函数主体的开始。
  18. 访问结构成员公民身份值并将其与其他文本一起打印在控制台上。
  19. 访问结构成员年龄值并将其与其他文本一起打印在控制台上。
  20. 函数体结束。

限制 C++ 结构体

以下是结构的局限性:

  • 结构数据类型不能被视为内置数据类型。
  • Opera不能用在 + - 等 结构变量.
  • 结构不支持数据隐藏。结构的成员可以被任何函数访问,无论其范围如何。
  • 静态成员不能在结构体内声明。
  • 不能在结构内部创建构造函数。

常见问题

In C++ 结构体和类几乎完全相同。唯一的真正区别在于默认访问权限:结构体成员默认是公共的,而类成员默认是私有的。两者都支持成员函数、构造函数和继承。

AC结构体仅用于存储数据,并且在每个变量声明之前都必须写上struct。 C++ struct 还可以包含成员函数、构造函数和访问说明符,并且在声明变量时 struct 关键字是可选的。

声明结构体,然后定义一个该结构体的数组,例如 `Person people[3]`。每个元素都是一个完整的结构体,可以通过 `people[0].age` 访问成员。结构体数组可以将多个相同类型的记录存储在一起。

嵌套结构是指将一个结构声明为另一个结构内部成员的结构。它将相关的子数据分组在一起,例如将一个 Date 结构放在一个 Employee 结构内部。可以通过使用点运算符来访问内部成员。

元素的大小大致等于其所有成员的大小之和,再加上编译器为了对齐而添加的填充,因此 `sizeof` 的值可能超过元素的原始总大小。成员函数不会增加任何额外的填充。按大小对成员进行排序可以减少不必要的填充。

当你持有指向结构体的指针时,请使用箭头运算符。例如,与其使用 `(*ptr).age)`,不如使用简写 `ptr->age` 读取相同的成员。点运算符作用于直接实例,而不是指针。

是的。人工智能编码助手可以将简短的提示或评论转换成完整的代码。 C++ 结构体,包括成员、构造函数和字段访问。务必检查生成的数据类型和对齐方式,因为人工智能可能会遗漏项目特定的要求。

是的。 GitHub 副驾驶 它会在你编辑器中输入代码时,提示你定义结构体、成员变量以及使用点或箭头函数访问。它能很好地处理重复的样板代码,但你仍然应该在编译前检查类型、填充和逻辑。

总结一下这篇文章: