结构体数组怎么初始化
时间: 2023-11-11 12:57:08 浏览: 232
结构体数组可以通过以下方法进行初始化:
1. 在定义结构体数组时,可以直接初始化每个元素。例如:
struct stu {
char *name;
int num;
};
struct stu arr = {{"Tom", 1}, {"John", 2}, {"Mike", 3}};
2. 使用循环语句逐个对结构体数组的元素进行初始化。例如:
struct stu {
char *name;
int num;
};
struct stu arr;
for (int i = 0; i < 3; i++) {
arr[i].name = "Name";
arr[i].num = i + 1;
}
3. 利用memset函数将整个结构体数组的内存空间初始化为特定的值。例如:
struct stu {
char *name;
int num;
};
struct stu arr;
memset(arr, 0, sizeof(arr));
相关问题
结构体数组初始化
结构体数组的初始化可以通过以下方式进行:
1. 逐个初始化
```
struct Person {
char name[20];
int age;
};
struct Person people[3] = {
{"Alice", 23},
{"Bob", 30},
{"Charlie", 40}
};
```
2. 顺序初始化
```
struct Person {
char name[20];
int age;
};
struct Person people[3] = {
{"Alice"},
{"Bob"},
{"Charlie"}
};
```
以上两种方式都是在定义结构体数组时进行初始化,如果已经定义了结构体数组,可以通过循环逐个赋值的方式进行初始化。
memset结构体数组初始化
可以使用memset函数来初始化结构体数组。下面是一个例子:
假设有一个结构体定义如下:
```c
struct Person {
char name[20];
int age;
float height;
};
```
现在需要定义一个Person类型的结构体数组,并将其全部初始化为0。可以使用memset函数来实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
struct Person people[10];
memset(people, 0, sizeof(people)); // 将结构体数组全部初始化为0
for(int i = 0; i < 10; i++) {
printf("%s %d %f\n", people[i].name, people[i].age, people[i].height);
}
return 0;
}
```
上述代码中,首先定义了一个Person类型的结构体数组people,然后使用memset函数将其全部初始化为0。最后使用for循环遍历结构体数组,并输出每个结构体的成员变量值,可以看到所有的成员变量都被初始化为0。
阅读全文