黑马程序员技术交流社区

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

作者: 王雪冬    时间: 2014-4-16 13:09
标题: 数组初始化问题
本帖最后由  王雪冬 于 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. }
复制代码

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

作者: 星河鹭起    时间: 2014-4-16 13:14
第二个不能这样子,因为如果要直接初始化,ages[]括号里传递的是个具体的数值,而你这样传递的是个变量进去了,不符合规定,如果分开初始化,也就是第一种,那就可以传递变量进去
作者: Freedam    时间: 2014-4-16 13:28
第二个main函数里的定义有误,那是因为从定义上看思路一致,但是在编译器支持的环境不同各有各的不同
在我的环境(编译器是C89标准的)编译是有问题的,如果换成其他的环境(用C99的话)将int count = 5改成const int count = 5就通过了。数组在初始化的时候中括号中必须是常量,int count = 5是自动类型的变量不是常量,这使得程序在链接的时候就报错了。




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