c语言结构体中数组调节大小
时间: 2023-11-25 21:02:46 浏览: 109
在C语言的结构体中可以使用数组来存储多个相同类型的数据。而调节数组大小的方法有两种。
第一种方法是在定义结构体时就确定数组的大小。例如,定义一个结构体Student,其中有一个名为grades的数组,用来存储学生成绩。我们可以在定义结构体时就确定grades数组的大小,如下所示:
```c
struct Student {
int grades[5];
};
```
上面的代码中,grades数组的大小被设置为5,所以每个学生最多可以存储5门课程的成绩。
第二种方法是在运行时动态调节数组的大小。这种方法需要使用指针和动态内存分配函数malloc来分配内存空间。例如,我们可以定义一个结构体Employee,其中有一个名为salaries的数组,用来存储员工的薪水。在运行时,我们可以根据需要动态调节salaries数组的大小,如下所示:
```c
struct Employee {
int* salaries;
int num_salaries;
};
int main() {
struct Employee emp;
int size;
// 获取需要存储的薪水数量
printf("请输入薪水数量:");
scanf("%d", &size);
// 动态分配内存空间
emp.salaries = (int*)malloc(size * sizeof(int));
emp.num_salaries = size;
// 存储薪水数据
for (int i = 0; i < size; i++) {
printf("请输入第%d个薪水:", i + 1);
scanf("%d", &emp.salaries[i]);
}
// 打印薪水数据
for (int i = 0; i < size; i++) {
printf("第%d个薪水:%d\n", i + 1, emp.salaries[i]);
}
// 释放内存空间
free(emp.salaries);
return 0;
}
```
上述代码中,首先我们定义了一个结构体Employee,其中salaries数组被定义为一个指针类型。然后,在运行时,通过调用malloc函数分配了一个大小为size的整型数组,并将其存储在emp.salaries中。用户输入需要存储的薪水数量后,通过循环逐个输入薪水数据,并打印出来。最后,使用free函数释放了动态分配的内存空间,以避免内存泄漏。
阅读全文