黑马程序员技术交流社区

标题: 关于数组初始化的问题 [打印本页]

作者: 二狗    时间: 2014-4-13 04:52
标题: 关于数组初始化的问题
本帖最后由 二狗 于 2014-4-13 13:42 编辑
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int count = 5;
  5.    
  6.     int ages[count];
  7.    
  8.     ages[0] = 10;
  9.     ages[1] = 11;
  10.     ages[2] = 18;
  11.    
  12.     for (int i = 0; i<5; i++) {
  13.         
  14.         printf("ages[%d]=%d\n",i,ages[i]);
  15.     }
  16.    
  17.     return 0;
  18. }
复制代码
这个数组只有ages[0], ages[1],ages,[2] 初始化 为什么运行以后会出现 ages[3] 和ages[4] 也有值了 而且是很奇怪的数字


作者: luoyilan222    时间: 2014-4-13 08:50
你多运行几次吧,看3,4中数据是否会变化,这应该是垃圾数据。
作者: blz01003hm    时间: 2014-4-13 10:48
你申请了5个数组空间 相当于5个数 只有3个赋值了  剩下2个的值是随机的
作者: 李烨    时间: 2014-4-13 10:57
c语言中 关于int类型的默认值,如果是全局变量为0,如果是局部变量则会在你以前的堆栈中随机。
作者: 从┧靇┟开始    时间: 2014-4-13 11:21
这个程序是要遍历数组的节奏,也就是调用数组中的元素,调用之前没有初始化的内容系统会随机分配,也就是刚开始学习的时候,老师叮嘱要养成初始化的好习惯!
其实就是后2个元素没初始化嘛,我真啰嗦
作者: 杨晓斌    时间: 2014-4-13 12:58
int a[]={1,2,3}; 这种方式初始化,大括号里写了几个元素那么数组里就有几个元素,相当于int a[3]={1,2,3}  int a[3]={0};  这样是将a中的所有元素初始化为0; int a[4]={1,2}; 这样是将a[0]初始化为1,a[1]初始化为2,其他的初始化为0
作者: 杨晓斌    时间: 2014-4-13 13:00
int a[]={1,2,3}; 这种方式初始化,大括号里写了几个元素那么数组里就有几个元素,相当于int a[3]={1,2,3}

int a[3]={0};  这样是将a中的所有元素初始化为0;
int a[4]={1,2}; 这样是将a[0]初始化为1,a[1]初始化为2,其他的初始化为0。
而你的初始化的时候数组有五个数,而你输入的时候只输入了三个数字,你的输出循环中是有输出五个数所以会出现a[3],a[4].
作者: 二狗    时间: 2014-4-13 13:23
李烨 发表于 2014-4-13 10:57
c语言中 关于int类型的默认值,如果是全局变量为0,如果是局部变量则会在你以前的堆栈中随机。 ...

谢谢:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2