初始化一个由20个元素组成的数组以稍后更新值,但数组中的某些元素在C中开始时为非零?为什么



我试图用K&R目前在前1.13上,我注意到一些奇怪的行为,我需要有人向我解释为什么会发生这种情况。如果你看一下下面的代码,它是一个粗略但有效的原型。

代码运行良好,直到字长达到9。这是j<10,但是如果我增加j循环说j<20,试图增加它将显示的单词长度,这让我陷入了一个无限循环。

在尝试排除故障时,我注意到可能会发生这种情况,因为在初始化数组后,数组中的一些元素一开始就不是0,这正常吗?如果是为什么会这样?

#include<stdio.h>
int main(void)
{
unsigned int     c;
unsigned int     i;
unsigned int     j;
unsigned int     k;
unsigned int     array[30];
i = 0;
j = 0;
k = 0;
while((c= getchar())!= EOF)
{
if((c==' ')|| (c == 't')||(c=='n'))
{
array[i]++ ;
i = 0;
}
else{
i++;
}
}
for(j=1;j<10;j++)
{
printf("%d t",j);
for(k=0; k< array[j]; k++)
{
putchar('-');
}
putchar('n');
}
return 0;
}

unsigned int array[30];仅声明一个由30个插槽组成的数组。如果您想将所有值初始化为0,以下是语法:

unsigned int array[30] = {0};

最新更新