如此声明数组正确吗?int n=10,a[n];

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:39:07
int n=10,a[n];这样对吗?
如果正样呢?
const int n =10;
int a[n];

上面说第二种是正确的请注意。
两种都不可以。你光声明的话可能编译器不会报错,
但是,你赋值试试就知道了
例如:
const int n = 10;
int a[n] = {0};
不相信的可以自己试试。

测试环境Dev-C++(gcc)

有错误variable-sized object may not be initialized

意思是,变量大小的对象不能被初始化。

究其原因,请大家参考下面提供的const限定符的具体意义,

const只是限定该函数不可被修改。并不是真正意义上的常量。

宏定义不失为一种方法。不然就malloc、free或者new、delete。

解说完毕。

另:引用一篇文章里的:

关键字const有什么含意?

我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const 的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么. 如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)

建议看一下http://linux.chinaitlab.com/c/713810_2.html

**补充一下。我说的是C语言。不是C++。
C++的话第一种是错误的,第二种正确

第一种是错误的,第二种是正确的。
对于编译器来说,数组的大小必须在声明的时