C++结构体

注:代码为测试代码,不可运行

什么是结构体?

在C++中,结构体(struct)是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起形成一个整体。通过结构体,可以创建复杂的数据结构来表示现实世界中的对象或概念,这使得程序设计更加直观和易于理解。与类不同的是,结构体默认是公有继承(public),并且成员变量默认也是公开的(public),而类则默认为私有继承(private)。

结构体的声明

要定义一个结构体,使用struct关键字后跟结构体名称以及花括号包围的一系列成员变量声明。每个成员变量都有自己的数据类型,并且可以在结构体内初始化。结构体定义后,就可以创建该结构体类型的变量了,这些变量被称为结构体实例或结构体对象。struct Point { int x; int y; };

上面的例子定义了一个名为Point的结构体,它有两个成员变量:x和y,它们都是整数类型,用来表示二维平面上的一个点。

创建结构体对象

一旦定义好了结构体,就可以创建结构体的对象并访问其成员:

Point p1; // 创建Point结构体的对象p1

p1.x = 3; // 设置p1的x坐标为3

p1.y = 5; // 设置p1的y坐标为5

// 或者直接初始化

Point p2 = {7, 9};

// 创建并初始化p2

结构体作为函数参数

结构体不仅可以作为变量使用,还可以作为函数的参数传递,甚至返回值。这样做可以让函数处理更复杂的输入输出。

void printPoint(Point p) {

    std::cout << “Point coordinates: (“ << p.x << “, “ << p.y << “)”<

 }

// 调用printPoint函数

printPoint(p1);

结构体内的函数(C++特有)

不同于C语言,在C++中,结构体也可以包含成员函数,从而实现行为和数据的封装。这种特性让结构体看起来更像是轻量级的类。

struct Rectangle {

int width, height;

   int area() {

      return width * height;

   } // 成员函数

};

Rectangle rect = {5, 4};

std::cout << “Area of the rectangle is: “ << rect.area() << std::endl;

结构体嵌套

结构体可以包含其他结构体作为其成员,这样的特性被称为结构体嵌套,它可以用来构建更复杂的数据结构。

struct Address {
        std::string street; 
        std::string city;
};
struct Person { 
       std::string name; 
       Address addr; // 嵌套结构体
}; 
Person person1 = {“John Doe”, {“Baker Street”, “London”}};

动态内存分配

如果需要在运行时根据实际情况动态地创建结构体对象,则可以使用指针和new操作符来进行动态内存分配。

Point* dynamicPoint = new Point{10, 20}; // 使用完之后记得释放内存

delete dynamicPoint;

总结

C++中的结构体提供了一种强大而灵活的方式来组织相关数据,使其成为构建复杂应用和解决实际问题的重要工具。结构体不仅限于存储数据,还能结合函数来描述行为,为程序员提供了更多的编程可能性。当涉及到更复杂的需求时,结构体可以进一步演化成类,以支持面向对象编程的全部特性。

你可能感兴趣的:(算法)