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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雪冬 中级黑马   /  2014-4-16 13:09  /  1235 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由  王雪冬 于 2014-4-16 13:45 编辑

看下面两端代码:
  1. int main
  2. {
  3.         int count=5;        
  4.         int ages[count];
  5.         
  6.         ages[0]=0;
  7.         ages[1]=1;
  8.         ages[2]=2;
  9.         return 0;
  10. }


  11. int main
  12. {
  13.         int count=5;        
  14.         int ages[count]={0,1,2};
  15.         
  16.         return 0;
  17. }
复制代码

我觉得两段代码的思路是一直的,
问什么第二个报错呢?

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2 视频中有详细介绍

查看全部评分

2 个回复

倒序浏览
第二个不能这样子,因为如果要直接初始化,ages[]括号里传递的是个具体的数值,而你这样传递的是个变量进去了,不符合规定,如果分开初始化,也就是第一种,那就可以传递变量进去

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

回复 使用道具 举报
第二个main函数里的定义有误,那是因为从定义上看思路一致,但是在编译器支持的环境不同各有各的不同
在我的环境(编译器是C89标准的)编译是有问题的,如果换成其他的环境(用C99的话)将int count = 5改成const int count = 5就通过了。数组在初始化的时候中括号中必须是常量,int count = 5是自动类型的变量不是常量,这使得程序在链接的时候就报错了。

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马