结构体数组较大设定全局
时间: 2023-08-13 12:19:54 浏览: 126
如果结构体数组较大,设定为全局变量可能会占用过多的内存空间,导致程序性能下降。此时可以考虑使用动态内存分配的方式来创建结构体数组。
具体步骤如下:
1. 在定义结构体时,先声明结构体的类型:
```
typedef struct my_struct {
int id;
char *name;
// ...
} my_struct;
```
2. 在某个函数中动态分配内存空间来创建结构体数组:
```
my_struct *arr;
arr = (my_struct *)malloc(sizeof(my_struct) * n); // 分配n个结构体的内存空间
```
3. 在这个函数中对结构体数组进行初始化:
```
void init_arr(int n) {
for (int i = 0; i < n; i++) {
arr[i].id = i;
arr[i].name = "hello";
// ...
}
}
```
4. 如果需要在其他函数中使用该结构体数组,可以通过参数传递的方式来实现:
```
void print_arr(my_struct *arr, int n) {
for (int i = 0; i < n; i++) {
printf("%d, %s\n", arr[i].id, arr[i].name);
}
}
```
需要注意的是,在使用完结构体数组后,需要使用free函数释放内存空间,例如:
```
free(arr);
```
这样可以避免浪费过多的内存空间。
阅读全文