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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

2 个回复

倒序浏览
本帖最后由 fantacyleo 于 2014-7-10 12:16 编辑

这里有3件事:
1. c99之前的c标准不允许变长数组
2. c99标准允许声明变长数组但不允许声明的同时初始化,也不允许把全局变量声明为变长数组
3. gcc编译器即使打开按c99之前的c标准编译的选项也支持变长数组的声明
回复 使用道具 举报
没看明白,坐等大神。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马