C、C++数组的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:01:13
最近研究《EASY C++》,他说:数组的长度必须是常量表达式,或者需要分配堆内存。

但是,我写程序的时候,经常写:
int n;
cin>>n;
int a[n];
也没有出错啊

是不是这个常量问题仅C中有,在C++中没有?

另外,如果上面的问题的答案是肯定的,那么就应该是作者错了,可他说的是C++啊,另外这么久了,他也应该发现了啊
编译通过,用的Dev-C++,默认编译器,Dev-C++在百度百科上可以看

这个问题偶也碰到过,一般是编译器不同。
我看过一本以turbo c 2.0 讲解的一本书,
书中:int n = 5; int score[n];是错误的,vc 6.0下 也是错误的,亲自编译过,确实如此。

在codeblocks下编译时没问题的,
codeblocks下 c compiler 我的设置是:mingw32-gcc.exe
c++ compiler 我的设置是:mingw32-g++.exe。

你应该去式一下
int n;
cin>>n;
int a[n];
(你肯定没有测试过)
肯定是编译不过的
编译的时候不知道n的值,所以编译器不知道分多大的
空间给a数组
学过汇编的就会很清楚这点

只能说你编译器NB

这样写在vc6.0 和 vs 2008 都是编译不过的,数组的大小必须是个常量,否则编译不过,我上学期刚学的c++,你用的是什么编译器,

貌似你那样的写法是错误的。
数组的长度必须是常量,因为编译的时候,编译器就会给数组分配好内存空间。
如果数组的长度是变量编译后会告诉你,‘a':未知大小,或者提示长度应输入常量,或者,不能分配常量大小为0的数组。
所以你以前的写法是错的~~~
不能改变数组长度是数组最大的弊端~