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

#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吗???

如果你不对数组进行初始化,则数组的值是未知数值,根据不同的运行环境,其数值也不同
因为定义一个数组后,不初始化,数组的值就是当前内存区域的值,这个值是不确定的(通常未初始化的内存区域的16进制数值为0xcc)
如果要定义一个全0的数组可以
int TCi[W]={0};
int TCo[W]={0};
这样会自动将数组区域清空为0(只要定义数组时为数组赋值,则会将该数组其余未赋值的空间自动赋值为0)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-13
这个问题要从计算机系统运行原理说起,简而言之就是,如果数组是局部变量,那么在运行到他这条指令时,会把堆栈内一段空间分配给这个数组来用,那么栈空间内原来数据就自然而然成了数组的元素了,由于堆栈地址存储了上一次用剩下的数值,所以,数组元素也是随机值
第2个回答  2018-10-28
数组的下标与数组元素的数量(n),两者的关系是TCI[n-1],也就是说TCI[0]表示第一个元素,但是当TCI[4]则表示第五个元素,这样已经超出跟系统申请的储存空间,而这超规第五个元素的使用值有可能是先前系统使用过但没有清空的值。有些编译程序甚至会报错。
第3个回答  2013-12-12
内存中的垃圾数据而已,自动赋值,想得倒美,C语言是连初始化都不会自动完成的……追问

你的意思是说,系统随便赋值的,是吧,我要想用要自己初始化!!怎么初始化,要是数组较大

追答

懂不懂“根本没有赋值操作”是什么意思

相似回答