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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

先定义int ages[5];
再一个一个赋值是可以的,但是这样赋值ages = {11,22,33,21,15};
编译器会报错呢?
为什么会报错,能详细讲下原理吗?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

9 个回复

倒序浏览
大括号赋值这种语法简写形式只能用在声明同时进行初始化的场合。原因是:数组名是个指针常量,其值是数组首元素的地址,且在声明int ages[5]时就已经决定并得到赋值了。你再来个age={},就是对常量二次赋值,当然不允许

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-7-19 18:04
大括号赋值这种语法简写形式只能用在声明同时进行初始化的场合。原因是:数组名是个指针常量,其值是数组首 ...

明白了,版主请给楼上加分!
回复 使用道具 举报
阳光地带 发表于 2014-7-19 18:20
明白了,版主请给楼上加分!

谢谢!我的分早够了。你的分数还要多加油。你把帖子状态改为”提问结束“,版主会给你加分的,如果24小时后还没给你加,可以到http://bbs.itheima.com/thread-118587-1-1.html 去申请加分
回复 使用道具 举报
fantacyleo 发表于 2014-7-19 18:26
谢谢!我的分早够了。你的分数还要多加油。你把帖子状态改为”提问结束“,版主会给你加分的,如果24小时 ...

谢谢啦!提问也可以加分的?
回复 使用道具 举报
阳光地带 发表于 2014-7-19 21:46
谢谢啦!提问也可以加分的?

可以啊。这是版规
回复 使用道具 举报
数组名就是数组的地址,和第一个首元素的地址相同,ages={11,22,33,21,15}这个操作会让你编译器认为你在操作ages[0]的内存
回复 使用道具 举报
没超过1天 不用提交,看到自然加了:victory:
回复 使用道具 举报
傘が咲く 发表于 2014-7-20 09:17
没超过1天 不用提交,看到自然加了

好的 谢谢版主!
回复 使用道具 举报
ages = {11,22,33,21,15};这个是初始化数组时候的用法,比如int ages[5]= {11,22,33,21,15};,初始化以后ages就是确定的常量了,这个赋值只能在初始化的时候用!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马