黑马程序员技术交流社区

标题: 关于数组初始化时下标定义为变量的问题,注意!!初始化 [打印本页]

作者: zhs    时间: 2014-7-10 11:43
标题: 关于数组初始化时下标定义为变量的问题,注意!!初始化
定义数组并初始化时下标不能是变量:
如:
int n=10;
int a[n]={10,20,39};
上面两句运行时会报错。
我在网上查了下:有人回答的是程序在编译时候会分配存储空间,而n的赋值操作在程序运行时才被赋值,所以在编译时无法获知该分配多大空间导致报错。

int n=5;
int a[n];
int  size=sizeof(a);
size会正常输出20,这样表明数组下标定义为变量编译时是可以分配空间的。
综上所述,问题应该出在数组初始化赋值这里,请过路高手不吝指教,不胜感激。
作者: fantacyleo    时间: 2014-7-10 12:10
本帖最后由 fantacyleo 于 2014-7-10 12:16 编辑

这里有3件事:
1. c99之前的c标准不允许变长数组
2. c99标准允许声明变长数组但不允许声明的同时初始化,也不允许把全局变量声明为变长数组
3. gcc编译器即使打开按c99之前的c标准编译的选项也支持变长数组的声明
作者: hm123tinghai    时间: 2014-7-10 15:45
没看明白,坐等大神。




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