问一下,C++里面定义数组的时候,数组大小可以用变量表示么?

XGHeaven 2014-08-05 08:15:38
如题,在C++ primer以及其他的材料里面说到,不能用变量给数组定义大小。
也就是
int a=10;
int b[a];
是不对的。

可是在DEVC++里面是可以编译通过的,请问这是怎么回事。

到底那个是对的?
...全文
16727 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
deyu35 2015-11-25
  • 打赏
  • 举报
回复
我也看到了,应该就是C99支持的动态数组,但C++中的动态是用vector和new来表示
vcf_reader 2014-08-08
  • 打赏
  • 举报
回复
具体编译器的实现有差异
黑娃 2014-08-07
  • 打赏
  • 举报
回复
引用 20 楼 xiaohuh421 的回复:
这个叫变长数组, 新的编译器, 支持新的标准就可能有这种写法. 支持C99标准的就有这个变长数组了. 否则不支持.
+1
赵4老师 2014-08-07
  • 打赏
  • 举报
回复
//在堆中开辟一个6个元素的一维int数组
#include <stdio.h>
#include <malloc.h>
int *p;
int i;
int main() {
    p=(int *)malloc(6*sizeof(int));
    if (NULL==p) return 1;
    for (i=0;i<6;i++) {
        p[i]=i;
    }
    for (i=0;i<6;i++) {
        printf(" %2d",p[i]);
    }
    free(p);
    return 0;
}
//  0  1  2  3  4  5
jmppok 2014-08-07
  • 打赏
  • 举报
回复 1
引用 1 楼 lisong694767315 的回复:
编译通过不代表正确,你把数组初始化试试:

int a=10;
int b[a] = {0,1,2,3,4,5,6,7,8,9};  // 报错
可以把a声明称const常量:

const int a=10;
int b[a] = {0,1,2,3,4,5,6,7,8,9}; 
HaoYuan 2014-08-07
  • 打赏
  • 举报
回复
C99好像是支持的!C++的话用vector啊!
malone1 2014-08-07
  • 打赏
  • 举报
回复
栈上不行,貌似堆上用变量定义可以 比如 int a =10; char * p = new char(10);
难题 2014-08-07
  • 打赏
  • 举报
回复 1
编译器扩展了,正常的是不允许这样写的,因为这样的数组是在栈上,你给个动态的大小怎么压栈? 加CONST就是在编译替换了,自然就可以
xiaohuh421 2014-08-07
  • 打赏
  • 举报
回复
这个叫变长数组, 新的编译器, 支持新的标准就可能有这种写法. 支持C99标准的就有这个变长数组了. 否则不支持.
twtiqfn 2014-08-07
  • 打赏
  • 举报
回复
这么认真的精神值得赞一下啊
ahthwywu 2014-08-07
  • 打赏
  • 举报
回复
这个很难说了,看看dev c++什么版本?说不定新版的有可能支持
神奕 2014-08-06
  • 打赏
  • 举报
回复
引用 8 楼 XGHeaven 的回复:
请教,不明白是什么意思,度娘找不到
学编程度娘帮不上忙,还是用Google吧。。。
shiguojie19892 2014-08-06
  • 打赏
  • 举报
回复
编译器的问题,太智能了。规矩都是人定的,c就是不允许变量赋给数组,编译器允许,那就是个例
discory 2014-08-06
  • 打赏
  • 举报
回复
刚学,看书上说变量只能用在vector容器里面
IT保安 2014-08-06
  • 打赏
  • 举报
回复
要么用常量N,要么const一个 或者new一个出来,那个就是动态的,用指针表示
  • 打赏
  • 举报
回复
把a声明const
cddchina 2014-08-06
  • 打赏
  • 举报
回复
不可以用变量,如果想动态大小 还是用模板库吧 STL Vector
我看你有戏 2014-08-06
  • 打赏
  • 举报
回复
栈上面定义一个数组 编译器要求这个数组的内存就是固定的了 假如你这个数组元素不确定,那还怎么压寨呢 那估计就会卡着了,显然行不通
XGHeaven 2014-08-06
  • 打赏
  • 举报
回复
引用 11 楼 bojie5744 的回复:
把a声明const
用了const? 怎么用? 如果这样用 const int a[k]; 那么有什么价值? 那要是这样用 const int a[k]={...} 万一初始化的元素数量比k多怎么办? 求教
XGHeaven 2014-08-06
  • 打赏
  • 举报
回复
引用 9 楼 lisong694767315 的回复:
[quote=引用 8 楼 XGHeaven 的回复:] 请教,不明白是什么意思,度娘找不到
学编程度娘帮不上忙,还是用Google吧。。。[/quote] 表示GOOGLE老是上不上,网上又没有什么好的在线代理。
加载更多回复(8)

65,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧