C中如何定义空数组,为什么我定义的空数组呗自动赋值?

#defineW4代码:intTCi[W],TCo[W];调试时发现当运行完intTCi[W],TCo[W];这句时TCI[0]=0TCI[1]=0TCI[2]=-105... #define W 4
代码: int TCi[W],TCo[W];
调试时发现
当运行完int TCi[W],TCo[W];这句时
TCI[0]=0

TCI[1]=0
TCI[2]=-10576
TCI[3]=32767
TCI[4]=1598441028
为什么出现这种情况,空数组不是全0吗???
展开
 我来答
lyz810
推荐于2017-11-26 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31777
前端开发工程师

向TA提问 私信TA
展开全部
如果你不对数组进行初始化,则数组的值是未知数值,根据不同的运行环境,其数值也不同
因为定义一个数组后,不初始化,数组的值就是当前内存区域的值,这个值是不确定的(通常未初始化的内存区域的16进制数值为0xcc)
如果要定义一个全0的数组可以
int TCi[W]={0};
int TCo[W]={0};
这样会自动将数组区域清空为0(只要定义数组时为数组赋值,则会将该数组其余未赋值的空间自动赋值为0)
匿名用户
2013-12-13
展开全部
这个问题要从计算机系统运行原理说起,简而言之就是,如果数组是局部变量,那么在运行到他这条指令时,会把堆栈内一段空间分配给这个数组来用,那么栈空间内原来数据就自然而然成了数组的元素了,由于堆栈地址存储了上一次用剩下的数值,所以,数组元素也是随机值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-10-28
展开全部
数组的下标与数组元素的数量(n),两者的关系是TCI[n-1],也就是说TCI[0]表示第一个元素,但是当TCI[4]则表示第五个元素,这样已经超出跟系统申请的储存空间,而这超规第五个元素的使用值有可能是先前系统使用过但没有清空的值。有些编译程序甚至会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-12
展开全部
内存中的垃圾数据而已,自动赋值,想得倒美,C语言是连初始化都不会自动完成的……
追问
你的意思是说,系统随便赋值的,是吧,我要想用要自己初始化!!怎么初始化,要是数组较大
追答
懂不懂“根本没有赋值操作”是什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式