结构体数组如何传入函数
时间: 2024-11-14 16:15:24 浏览: 15
在 C++ 中,将结构体数组作为参数传递给函数非常直观,你可以直接使用结构名或者通过指针引用。以下是两种常见的方法:
1. **按值传递** (Pass by value):
当函数接受结构体数组时,它会复制整个数组。这适用于小型结构体和数组,因为复制开销较小。
```cpp
void printPeople(Person people[], size_t count) {
for (size_t i = 0; i < count; i++) {
std::cout << "Name: " << people[i].name << ", Age: " << people[i].age << '\n';
}
}
// 调用函数
printPeople(people, sizeof(people) / sizeof(persons[0]));
```
2. **按引用传递** (Pass by reference or pointer):
如果数组较大或不想复制,可以使用引用或指针传递,这样只传递指向数组的内存地址,不会复制整个数组内容。
```cpp
void printPeople(const Person(&arr)[3]) { // 或者 Person* arr, 具体看结构体是否可变
for (size_t i = 0; i < 3; i++) {
std::cout << "Name: " << arr[i].name << ", Age: " << arr[i].age << '\n';
}
}
// 调用函数
printPeople(people);
```
注意,在函数内部只能访问数组内的数据,不能修改数组本身(除非是通过引用传递)。另外,当你使用指针时,确保传递的是有效的内存区域,避免未初始化或越界访问。
阅读全文