关于C程序中数组元素初始化的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:40:33
我现在在练习C语言的上机题,经常看见要使用一个数组的时候
先要把所有元素初始化为0,这是为什么呢?数组元素如果不赋初值的话,默认值不是都为0吗? char类型的数组也是0吗?
我经常看到menset()函数,要不就是for(i=0;i<26;i++)ch[i]=0;这里ch是一个(将)要存放26个英文字母出现次数的数组,ch是对以后存储26个英文字母出现次数的,比如出现一次'a'||'A'那么a[0]的值就该为1,如果不把数组元素初始化为0,会有错误发生吗? 我觉的初始化为0有点多余吧?

不赋值时候,内容是不可估计的,什么都有可能。

初始化后后面就不用初始化了。
比如你的例子,
肯定是通过循环统计字符出现次数,
那么势必会用到累加
如a[0]++
这个时候就有问题了,如果你不给a[0]初值的话,计算机
随即从一个数开始累加了,
可能是10 ,可能是0 ,也可能是100000开始。
这样你还能准确统计出现次数么?
这个时候你还是要在循环开始前 给a[0]赋个值。

static变量系统自动初始化为零,一般变量是不会初始化的,那么他们就是随机值。
这样,在你上面所说的统计过程中,各个统计值都从随机数开始,正确吗?
所以初始化为零是需要的。当然,也不是必需的。

最好是先初始化一下,不然数组里的元素是随机的结果,假如你的程序是用来统计个数的,如果你后面都还没赋值就开始使用这条语句,a[i]++;后果就不好想像了
但不一定初始化为0,看什么程序,如果要把一个数组全部初始化0的话,直接在定义的时候初始化是最方便的,不要像上面一样还要调用函数和循环,比如下面就把一个数组元素全部初始化为0了

int a[100]={0};//在定义的同时初始化

不把所有元素初始化,得到的结果不确定!!!(比如定义{int a;printf("%d",a);}未初始化的话,可能原先a在内存中的地址存储的是4,结果输出的结果可能为4)

char类型的数组不初始化的话,,默认值是都为"\0"字符!!