C语言中如何将结构体数组传递给自己定义的函数
时间: 2024-12-22 18:12:05 浏览: 129
在C语言中,你可以通过函数指针或作为实际参数的形式将结构体数组传递给自定义函数。这里有两个常见的方法:
1. **通过指针传递**:
- 定义结构体数组:
```c
typedef struct {
int field1;
char field2[20];
} MyStruct;
MyStruct arr[] = { {1, "value1"}, {2, "value2"} };
```
- 定义接收该数组的函数,并传入指向数组的第一个元素的指针:
```c
void processArray(MyStruct *arr, int size) {
for (int i = 0; i < size; i++) {
// 对每个结构体操作
printf("Element %d: field1 = %d, field2 = %s\n", i, arr[i].field1, arr[i].field2);
}
}
processArray(arr, sizeof(arr)/sizeof(arr[0])); // 传入数组长度
```
2. **作为实际参数传递**:
如果函数接受的是动态大小的数据,可以使用`void *`类型的参数并转换成结构体指针,但这需要函数声明时提供结构体的定义:
```c
#define ARRAY_SIZE 2
void processArray(void *array, size_t size, const typeof(arr[0]) elemType) {
MyStruct *arr = (MyStruct*) array;
for (size_t i = 0; i < size; i++) {
// ...
}
}
processArray(arr, ARRAY_SIZE, &arr[0]); // 传入数组和元素类型信息
```
记住,在使用这种方法时,你需要确保接收函数对传入的结构体类型有正确的理解。
阅读全文
相关推荐


















