A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 二狗 中级黑马   /  2014-4-13 04:52  /  1279 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 二狗 于 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] 也有值了 而且是很奇怪的数字

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

7 个回复

正序浏览
二狗 中级黑马 2014-4-13 13:23:18
8#
李烨 发表于 2014-4-13 10:57
c语言中 关于int类型的默认值,如果是全局变量为0,如果是局部变量则会在你以前的堆栈中随机。 ...

谢谢:handshake
回复 使用道具 举报
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].

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
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
回复 使用道具 举报
这个程序是要遍历数组的节奏,也就是调用数组中的元素,调用之前没有初始化的内容系统会随机分配,也就是刚开始学习的时候,老师叮嘱要养成初始化的好习惯!
其实就是后2个元素没初始化嘛,我真啰嗦

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
c语言中 关于int类型的默认值,如果是全局变量为0,如果是局部变量则会在你以前的堆栈中随机。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
你申请了5个数组空间 相当于5个数 只有3个赋值了  剩下2个的值是随机的

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
你多运行几次吧,看3,4中数据是否会变化,这应该是垃圾数据。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马