当声明为int arr [10] = {1}时,数组将自动初始化为零,并将第一个元素初始化为1。
#include<stdio.h>
int main()
{
int i;
int arr[10]={1};
for(i=0;i<10;i++)
{
printf("\n%d",arr[i]);
}
return 0;
}
如何使数组元素在初始化时除了第一个元素以外都为零?
当声明为int arr [10] = {1}时,数组将自动初始化为零,并将第一个元素初始化为1。
#include<stdio.h>
int main()
{
int i;
int arr[10]={1};
for(i=0;i<10;i++)
{
printf("\n%d",arr[i]);
}
return 0;
}
如何使数组元素在初始化时除了第一个元素以外都为零?
static
存储期间的值,即0的值。C11
,第§6.7.9章,初始化(强调是我的)
关于具有如果花括号括起来的列表中初始化程序比聚合类型中的元素或成员少,或者用于初始化已知大小数组的字符串字面量中字符数少于数组中的元素数,则剩余部分的聚合物应该隐式初始化为与具有静态存储持续时间的对象相同。
static
存储期的变量的初始化,
所以,在你的情况下,这么做非常正确。[...] 如果未显式初始化具有静态或线程存储期的对象,则:
- [...]
- 如果它具有算术类型,则将其初始化为(正或无符号)零;
- [...]
int arr[10]={1};
arr[0]
的值为 1
,arr[1]
到 arr[9]
都被设置为 0
。