结构体stuct中的数组会自动赋值为0吗 
时间: 2023-06-01 10:03:10 浏览: 20
在C语言中,结构体中的数组不会自动赋值为0。如果需要将数组初始化为0,可以使用以下方式:
1. 在定义结构体变量时,将数组元素全部赋值为0,例如:
```
struct MyStruct {
int arr[10];
};
struct MyStruct s = { {0} };
```
2. 在定义结构体时,使用初始化器将数组初始化为0,例如:
```
struct MyStruct {
int arr[10];
} s = { {0} };
```
3. 在定义结构体时,使用memset()函数将数组初始化为0,例如:
```
struct MyStruct {
int arr[10];
};
struct MyStruct s;
memset(&s, 0, sizeof(s));
```
相关问题
scanf给结构体数组中数组赋值
可以使用scanf来给结构体数组中的数组赋值,具体操作如下:
假设有以下结构体定义:
```c
typedef struct {
int id;
char name[20];
int scores[3];
} Student;
```
可以通过以下代码给结构体数组中的数组赋值:
```c
int main() {
Student stu[3];
int i, j;
for (i = 0; i < 3; i++) {
printf("请输入学生%d的信息:\n", i + 1);
scanf("%d%s", &stu[i].id, stu[i].name);
for (j = 0; j < 3; j++) {
scanf("%d", &stu[i].scores[j]);
}
}
return 0;
}
```
上述代码中,首先定义了一个包含3个元素的结构体数组stu。然后使用for循环遍历结构体数组,并使用scanf依次输入学生的id、姓名和3门课程成绩,最终将输入的值存储到结构体数组中。
c语言结构体中的数组变量赋值,C语言 如何在结构体中给嵌套的结构体赋值?...
结构体中的数组变量可以使用下标逐个赋值,例如:
```c
struct Example {
int arr[5];
};
int main() {
struct Example ex;
ex.arr[0] = 1;
ex.arr[1] = 2;
ex.arr[2] = 3;
ex.arr[3] = 4;
ex.arr[4] = 5;
return 0;
}
```
对于嵌套的结构体,可以通过逐个赋值的方式或者使用结构体初始化器进行赋值。例如:
```c
struct Inner {
int val;
};
struct Outer {
struct Inner in;
int arr[5];
};
int main() {
struct Outer out;
out.in.val = 10;
out.arr[0] = 1;
out.arr[1] = 2;
out.arr[2] = 3;
out.arr[3] = 4;
out.arr[4] = 5;
// 或者使用结构体初始化器
struct Outer out2 = {
.in = {
.val = 20
},
.arr = {6, 7, 8, 9, 10}
};
return 0;
}
```
在使用结构体初始化器时,可以使用点号`.`来指定结构体中的成员变量。注意,结构体初始化器的顺序必须与结构体定义中成员变量的顺序一致。
相关推荐













