为什么c++中声明数组时可以用变量而c却不行?

如题所述

因为数组是确定大小的,在c++和c中都不能以变量声明,但可以采用以下方式:#define n 5int a[n];此时宏定义n为5,在程序编译时就已确定n.
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-20
要么在前面定义了变量,要么使用new动态分配的C/C++都是不能直接在数组大小为变量的C中可以用malloc()来动态分配的本回答被网友采纳
第2个回答  2014-03-20
数组是要确定大小的,如果真有需要用变量的话可以用new delete动态创建和删除数据

为什么c++中声明数组时可以用变量而c却不行?
因为数组是确定大小的,在c++和c中都不能以变量声明,但可以采用以下方式:#define n 5int a[n];此时宏定义n为5,在程序编译时就已确定n.

为什么有的C++编译器里数组的大小是变量时不会出错,有的会出错._百度...
这个的原因是有两方面:C++标准里明确规定:数组的初始化必须是常量、或者常量表达式。所以上面的代码只在一部分编译器里面能够编译通过,如:MinGW 微软的编译器是不能编译通过这个的,因为微软的编译器没有在标准的基础上进行扩展,但是MinGW编译器却扩展了数组中的初始化方式,所以如果楼主想要编译一个跨...

C++与C的区别终于说清楚了!
在C++中,全局的const变量具有内部链接,而在C语言中具有外部链接。这使得C++规则旨在在头文件中更方便地使用const变量。使用关键字extern可以使const变量具有外部链接。C++可以使用const声明普通数组的大小,并且可以使用const值初始化其他const变量,这是C语言中所没有的。在C和C++中,声明结构或联合后,都...

c++中怎样声明数组
C++中声明数组跟C语言中是一样的。具体定义与使用方法可以参考如下程序段:int a[5]; \/\/ 定义一个含5个元素的int类型的数组 double b[5]={3.2, 3.5, 0.8, 8, 5,3}; \/\/ 定义一个含5个元素的double类型的数组并初始化 char c[] ="abcd"; \/\/ 定义一个字符数组,并初始...

C++ 使用变量声明数组长度
C++中无法使用变量作为数组长度,必须使用常量。原因在于数组空间分配在栈内存中,这部分空间大小必须在编译时就确定,不能等到运行时再分配。常量值在编译时就确定,而变量须运行时才能确定。因此,若要使用变量声明数组长度,可以选择将数组空间开辟在堆内存中。采用这种方法,虽然灵活性增强,但在内存管理...

C语言中数组长度能使用变量定义吗?
1、C语言中不支持。C++中支持变长数组(你可以自行度娘变长数组和alloca函数),但是因为其实在栈上分配,不被推荐使用。做为解决方案,你可以使用C式的malloc函数或者C++式的new函数来在堆上动态分配内存,这样长度是完全可以自定的。2、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供...

c++中数组的下标可以是变量吗?
1、C89\/C90标准:定义数组时下标只允许使用整型、字符型常量,引用数组时下标可以使用整型、字符型的常量或者变量 2、C99标准:定义数组时下标可以使用整型、字符型的常量或变量,但变量必须已经赋值;引用数组时下标可以使用整型、字符型的常量或者变量。以上所说的常量及变量均包含表达式。

为什么结构体中的数组不能用const int变量指定大小?
编译器不同,编译的结果也是不同的。标准C不支持变量申明数组大小,但是有些融合了C++的支持变量申明。但是C++也不推荐这么写,数组大小应该是一个常数,如果不确定数组大小最好还是用vector之类的容器 你把组数改成char str[8192];或是 在开头设置个宏定义#define (MAX_STRING)(8192)以后只要修改这个...

C++为什么在主函数外用const声明一个变量 但是主函数内不能使用此变量...
而const的常量,虽然是常量,也仅仅是在运行期间,你这个代码里会分配在全局内存,不管怎么说都是“运行期间”,你编译期间,数组分配空间大小要由一个运行期间的常变量决定,怎么可能。不过使用预编译宏可以, #define MAX 10 int golf[MAX];预编译嘛,编译器就不会有问题啦,明白了吗?

请问C++的字符串string类为什么数组中不能为变量?
因为数组在C++中是静态存在的,它占用一定的空间(也就是固定长度),在数组当前所在函数运行中是不能改变其长度的(函数结束就消失),一旦改变了长度,数组所在内存区就会出现空缺,导致出错!你在int n=5之前不添加const声明为常变量,系统将认为你“企图”在运行中修改数组长度,所以不予通过。

相似回答