c语言中,建立数组a[2],如果我只给a[0]赋值,系统是不是自动给a[1]赋一个0?

如题所述

楼主的说法是正确的、忘了是老师说还是教材写的了、总之是这样、100%无误
--------------------------------------------------------------
为什么不相信自己、不要管别人怎么说、实践是检测真理的唯一准则、
无论是静态全局还是局部、只要数组经过初始化、未赋值部分肯定为0、
无论是Windows还是Linux系统、无论vs还是gcc编译、肯定是这个答案、
老师真的在课堂上教过、别人说的曾经也许是对的、但不一定一直都对、
为什么不选我为正确答案...............怨..................
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-29
如果a[2]是全局的或静态的,无论给a[0]赋什么值,a的其他元素就都被初始化为0了。如果a[2]局部的,只给 a[0]赋值,那么其他元素的值则是随机的。追问

int a[2];
scanf("%d",a+0);
printf("%d",a[1]);
这时候的a[1]就是随机数字?
如果int a[2]={1};
printf(‘%d",a[1]);
这时候输出的a[1]就是0对么?

追答

如果前三行说的是局部情况,后三行说的是静态或全局情况,OK!

本回答被提问者采纳
第2个回答  2013-06-29
不一定的,要分两情况:
1。静态或全局变量是在静态区分配的,如果没有初值,自动初始化成0;
2。但局部变量不同了,程序运行时才在堆栈中临时分配的,没有初值时,是随机值;追问

int a[2];
scanf("%d",a+0);
printf("%d",a[1]);
这时候的a[1]就是随机数字?
如果int a[2]={1};
printf(‘%d",a[1]);
这时候输出的a[1]就是0对么?

追答

下一个a[1]也是随机值。
你的a[2]在main()中 ,是 “局部变量”。
你可能尚未理解 “全局变量”、“静态变量”、“局部变量”的
概念与区别,

第3个回答  2013-06-29
就是的
你赋予几个值,就只有前几个数组有值,后面的取0
相似回答