您的位置:

C++结构体数组详解

一、C 结构体数组指针

C 结构体数组可以使用指针进行操作。通过指向结构体数组的指针,可以遍历数组中的所有元素。声明指向结构体数组的指针,语法如下:

struct Person {
    char name[20];
    int age;
};
struct Person p[10];
struct Person *pPtr = p;

对于上述代码,pPtr 是指针变量,指向结构体数组 p 的第一个元素。

通过 (*pPtr).name 和 pPtr->name 可以访问数组中的成员。

二、C 结构体数组传递

可以将结构体数组作为参数传递给函数,语法如下:

void printPeople(struct Person people[], int length) {
    for (int i = 0; i < length; i++) {
        cout << people[i].name << " is " << people[i].age << " years old" << endl;
    }
}

在调用此函数时,可以传递结构体数组及其长度:

struct Person p[3] = {{"Tom", 25}, {"Jerry", 24}, {"Mickey", 26}};
printPeople(p, 3);

三、C 结构体数组赋值

可以使用等号将一个结构体数组的所有元素值赋给另一个结构体数组:

struct Person p1[2] = {{"Tom", 25}, {"Jerry", 24}};
struct Person p2[2];
p2 = p1;  // 报错

但是上面的代码是错误的,不能直接使用等号将结构体数组赋值给另一个结构体数组。可以使用循环遍历来完成赋值操作:

for (int i = 0; i < 2; i++) {
    p2[i] = p1[i];
}

四、结构体数组

结构体数组是指由结构体构成的数组。结构体数组的访问方式与普通数组类似。

struct Point {
    int x;
    int y;
};
struct Point p[3] = {{0, 0}, {1, 1}, {2, 2}};
cout << p[0].x << "," << p[0].y << endl;  // 输出 0,0

五、C 结构体数组全部初始化为0

可以使用下列方式将结构体数组全部初始化为0:

struct Person p[10] = {0};

这样会将所有成员变量全部置为0。

六、C 结构体数组不能用const

C 结构体数组不能用 const 修饰。

struct Person {
    char name[20];
    int age;
};
const struct Person p[2] = {{"Tom", 25}, {"Jerry", 24}};  // 报错

七、C 结构体数组删除

结构体数组不支持删除元素的操作。可以使用标记位来实现逻辑上的删除。也可以使用动态数组替代结构体数组,以便进行增删操作。

八、C 结构体数组初始化

结构体数组初始化时可以使用类似普通数组的方式:

struct Coordinate {
    double x;
    double y;
};
struct Coordinate point[3] = {{1.0, 2.0}, {2.5, 6.3}, {5.2, 1.8}};

也可以在定义结构体时进行初始化:

struct Coordinate {
    double x;
    double y;
} point[3] = {{1.0, 2.0}, {2.5, 6.3}, {5.2, 1.8}};

九、C 结构体数组

C 结构体数组是一种常见的数据结构。

struct Student {
    char name[20];
    int age;
    float grade;
};
struct Student stu[3] = {{"Tom", 18, 85.5}, {"Jerry", 19, 92.0}, {"Mickey", 20, 88.5}};

通过遍历结构体数组,可以对每个元素进行处理,完成各种计算、排序、查找等操作。

十、结构体数组怎么使用

结构体数组是C++中常用的数据结构之一,可以用来存储各种信息。

要使用结构体数组,需要:

  1. 定义一个结构体类型
  2. 创建一个结构体数组
  3. 初始化数组中的每个元素
  4. 遍历数组,对每个元素进行处理

下面是一个示例代码,用于演示结构体数组的使用方法:

struct Employee {
    char name[20];
    int age;
    float salary;
} emp[3] = {{"Tom", 25, 8000.0}, {"Jerry", 30, 10000.0}, {"Mickey", 35, 12000.0}};

int main() {
    for (int i = 0; i < 3; i++) {
        cout << emp[i].name << " is " << emp[i].age << " years old and earns " << emp[i].salary << " yuan per month" << endl;
    }
    return 0;
}

运行上述代码,将输出三个员工的名字、年龄和工资。