C: 变量的默认初始化值
通常情况
取决于变量(包括build-in类型和复合类型如数组, 结构体,联合体)是否是静态以及它的位置。
- 静态、全局变量:默认初始化为0;
- 局部变量:值不确定
特例:复合类型的部分初始化
若数组的初始化列表长度小于该数组维度,剩余未初始化的值会被初始化为0。
例子:
#include <stdio.h>
int main() {
int a[10] = {1,2,3,4};
for(int i = 0; i < 10; i++)
{
printf("%d\r\n", a[i]);
}
return 0;
}
stdout输出:
1
2
3
4
0
0
0
0
0
0
若结构体的初始化列表长度小于该结构体维度,剩余未初始化的结构体成员会被初始化为0。
#include <stdio.h>
struct test{
int a;
int b;
int c;
int d;
};
int main() {
struct test obj = {
.a = 1
};
printf("%d\r\n", obj.a);
printf("%d\r\n", obj.b);
printf("%d\r\n", obj.c);
printf("%d\r\n", obj.d);
return 0;
}
stdout输出:
1
0
0
0