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

我现在在练习C语言的上机题,经常看见要使用一个数组的时候先要把所有元素初始化为0,这是为什么呢?数组元素如果不赋初值的话,默认值不是都为0吗?char类型的数组也是0吗?... 我现在在练习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有点多余吧?
展开
 我来答
_野香蕉_
2008-04-15 · TA获得超过3304个赞
知道大有可为答主
回答量:3567
采纳率:50%
帮助的人:1183万
展开全部
不赋值时候,内容是不可估计的,什么都有可能。

初始化后后面就不用初始化了。
比如你的例子,
肯定是通过循环统计字符出现次数,
那么势必会用到累加
如a[0]++
这个时候就有问题了,如果你不给a[0]初值的话,计算机
随即从一个数开始累加了,
可能是10 ,可能是0 ,也可能是100000开始。
这样你还能准确统计出现次数么?
这个时候你还是要在循环开始前 给a[0]赋个值。
百度网友d127579
2008-04-15 · TA获得超过1663个赞
知道小有建树答主
回答量:634
采纳率:0%
帮助的人:0
展开全部
static变量系统自动初始化为零,一般变量是不会初始化的,那么他们就是随机值。
这样,在你上面所说的统计过程中,各个统计值都从随机数开始,正确吗?
所以初始化为零是需要的。当然,也不是必需的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PcrazyC
2008-04-15 · TA获得超过1466个赞
知道小有建树答主
回答量:911
采纳率:0%
帮助的人:932万
展开全部
最好是先初始化一下,不然数组里的元素是随机的结果,假如你的程序是用来统计个数的,如果你后面都还没赋值就开始使用这条语句,a[i]++;后果就不好想像了
但不一定初始化为0,看什么程序,如果要把一个数组全部初始化0的话,直接在定义的时候初始化是最方便的,不要像上面一样还要调用函数和循环,比如下面就把一个数组元素全部初始化为0了

int a[100]={0};//在定义的同时初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-04-15
展开全部
不把所有元素初始化,得到的结果不确定!!!(比如定义{int a;printf("%d",a);}未初始化的话,可能原先a在内存中的地址存储的是4,结果输出的结果可能为4)

char类型的数组不初始化的话,,默认值是都为"\0"字符!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
德河霍枫
2019-09-12 · TA获得超过3708个赞
知道大有可为答主
回答量:3136
采纳率:25%
帮助的人:158万
展开全部
前面两个是初始化运行的,其等号并不是赋值操作。
后面char
s[10];
s[10]="book"

char
s[10];
s[]="book"缉矗光匪叱睹癸色含姬;
这里面=是赋值操作。
字串不能直接赋值,要用strcpy。
和静态储存无关。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式