以结构体数组作为形参可以如何写
时间: 2024-10-23 08:18:24 浏览: 30
当使用结构体数组作为函数参数时,你可以采用类似下标引用的方式来访问结构体数组中的元素。以下是一个简单的例子说明:
// 方式一:结构体数组作为函数参数 - 下标引用
```cpp
// 定义一个结构体 Stu
struct Stu {
string name;
int age;
string hobby;
};
// 函数模板,接受结构体数组作为参数
template <typename T>
void printStructArray(T arr[], int size) {
for (int i = 0; i < size; i++) {
cout << arr[i].name << " " << arr[i].age << " " << arr[i].hobby << endl;
}
}
// 使用结构体数组
Stu students[] = {{"Alice", 20, "Reading"}, {"Bob", 22, "Sports"}};
int numStudents = sizeof(students) / sizeof(students[0]); // 计算数组长度
// 调用函数,打印结构体数组
printStructArray(students, numStudents);
```
在这个例子中,`printStructArray`函数接收一个结构体数组(通过指针arr)以及它的大小作为参数。然后,它遍历数组并打印每个结构体成员。
相关问题
c语言结构体数组作为形参是怎样的?举个例子
好的,关于你问的问题,我可以回答。在C语言中,结构体数组作为形参时,可以通过指针传递,也可以直接传递结构体数组。这可以用来处理需要对多个结构体进行操作的函数。
举个例子,假设我们有一个结构体Person,字段包括姓名和年龄。我们想写一个函数来打印多个Person的信息,可以这样定义函数:
```
void printPersonArray(Person *persons, int n) {
for (int i = 0; i < n; i++) {
printf("%s is %d years old.\n", persons[i].name, persons[i].age);
}
}
```
这个函数以结构体数组Person *persons和其长度n作为参数。在函数内部,我们可以通过下标访问结构体数组的各个元素,并输出它们的信息。
当我们需要调用这个函数时,可以这样做:
```
Person persons[3] = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};
printPersonArray(persons, 3);
```
这个例子创建了一个有三个元素的Person结构体数组,并将其传递给printPersonArray函数。函数会打印每个人的姓名和年龄。
希望这个例子可以帮助你更好地理解结构体数组作为形参的用法。
1. 创建一个结构体数组,数组名为book,结构体成员包含编号,书名,售价(数据类型自己设定)。写一个函数,包含两个形参,分别接收结构体数组的首地址和一个指定的售价,函数的功能为打印结构体数组中售价大于指定售价的书的信息。
代码如下:
```c
#include <stdio.h>
struct Book {
int id;
char name[20];
float price;
};
void printBooks(struct Book *book, float price) {
int i;
for (i = 0; i < 3; i++) {
if (book[i].price > price) {
printf("编号:%d,书名:%s,售价:%.2f\n", book[i].id, book[i].name, book[i].price);
}
}
}
int main() {
struct Book book[3] = {
{1, "C语言程序设计", 36.5},
{2, "Java编程思想", 78.0},
{3, "Python入门教程", 45.8}
};
printBooks(book, 50.0);
return 0;
}
```
在主函数中创建一个包含3个元素的结构体数组book,并初始化。调用printBooks函数,将结构体数组的首地址和指定的售价50.0作为参数传入。printBooks函数遍历结构体数组,如果售价大于指定售价,则打印该书籍的信息。运行结果如下:
```
编号:2,书名:Java编程思想,售价:78.00
编号:3,书名:Python入门教程,售价:45.80
```
阅读全文