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

© 愿我能 中级黑马   /  2014-4-26 19:15  /  2301 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int ages[5];
  2.     ages = {10, 11, 12, 14};
  3. //是错误的写法
  4. int ages[5];
  5.     ages = {10, 11, 12, 14};
  6. //为什么是正确的,表示视频中老师好像没有具体讲,只说了下面也是错误的
  7. int ages[count] = {10, 11, 12};
复制代码

9 个回复

倒序浏览
数组可以用一个列值来初始化,例如
         int v1[] ={1,2,3,4};
当数组定义时没有指定大小,当初始化采用列表初始化了,那么数组的大小由初始化时列表元素个数决定。所以v1为 int[4]类型。如果明确指定了数组大小,当在初始化时指定的元素个数超过这个大小就会产生错误。例如:
         char   v3[2] ={'a','b',0};   //错误:太多的初始化值了
         char   v3[3] ={'a','b',0};   //正确如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为   0。例如
         int   v5[8]={1,2,3,4};
等价于
          int   v5[8]={1,2,3,4,0,0,0,0};

评分

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

查看全部评分

回复 使用道具 举报
三个都是错误的
第一个和第二个问题是数组只允许在定义的时候初始化列表
只能这样写
int ages[5] = {1,2,3,4,5};
第三个问题: 如果变量count是一个宏(#define定义)或const常量 且 count的值大于初始化列表参数的数量就不会出错

因为在C/C++中 定义一个数组必须显示地指定数组的元素数量.简单地说中括号中必须是个整数常量或宏

评分

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

查看全部评分

回复 使用道具 举报
gaoxinglei123 来自手机 中级黑马 2014-4-26 22:50:19
板凳
本帖最后由 gaoxinglei123 于 2014-4-27 20:39 编辑

数组就像结构体一样。声明时同时初始化,才能那样写。平时那样写是不允许的。数组在这种情况下声明时 是不能以变量为数组长度的。。只有在函数中才有可能用这种方式
回复 使用道具 举报
顺便学习了 数组赋值我一直叫不准
回复 使用道具 举报
数组的初始化 一般分四种
1,就i是 成员全部初始化:int a[3] =(1,2,3)
2,将缺省的成员置为 0: int a[10] = { 1, 2 };
3初始化全部成员为0: int a[10] = { 0 };
4 如果数组个数确定 可以这样写 int a[] ={1,2,3};
如果数组长度不想用数字表示, 可以使用宏定义
#define n 5 这样定义过就可以 实现 int a [n] ={1,2,3,4,5};


回复 使用道具 举报
Er01c 中级黑马 2014-4-27 02:00:28
7#
一维数组名是个指针常量(不允许赋值!),它存放的是一维数组第一个元素的地址
回复 使用道具 举报
恣意 初级黑马 2014-4-27 13:11:51
8#
1、你的1,2和4,5行有什么区别么?
2、数组元素个数必须是常量,即
   类型说明符 数组名[常量表达式]。
   所以,当count是常量时,7行才是正确的。
   另外,数组名表示该数组的存储地址(指针)是个常量,不   能被赋值

3、数组初始化
   可以只给一部分元素赋值,只赋给前面的元素,剩余的元素   值为0,
   int ages[5]= {10, 11, 12, 14};
回复 使用道具 举报
//是错误的写法
int ages[5];
    ages = {10, 11, 12, 14};//这个错误是因为,只有在定义数组的同时进行初始化;
int ages[count] = {10, 11, 12};//这个错误是因为定义数组的时候数组元素个数只能是常量,不能是变量;
//正确写法
1、int ages[5]= {10, 11, 12};//输出未定义的元素的值是0
2、int count = 3;
    int ages[count];
    ages[0]=20;
    这样写是正确是因为你定义数组的时候没有进行初始化,可是这样输出的没有定义的元素的值是不确定的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马