数组的长度在编译器要求定下来。而变量的值直到运行时在知道。
可使用动态分配数组:
int len = 0;使用new操作符,动态申请内存。不过用完后需要用delete删除。
例子:
int N ;为什么在c++中定义数组时数组的常量表达式不能包含变量?
但不管是什么,都原理一样,以数组大小为例,在C++中,有些变量是在编译期间,编译器就给分配空间的,有的是运行时候才分配空间,对于编译期间就分配空间的变量,编译器一定要知道它是多少长度的,才能分配适合那个长度的空间,静态数组,临时变量,全局变量之类都是这样。你放变量在里面,当然编译期间都...
c++中数组的下标可以是变量吗?
1、C89\/C90标准:定义数组时下标只允许使用整型、字符型常量,引用数组时下标可以使用整型、字符型的常量或者变量 2、C99标准:定义数组时下标可以使用整型、字符型的常量或变量,但变量必须已经赋值;引用数组时下标可以使用整型、字符型的常量或者变量。以上所说的常量及变量均包含表达式。
在定义数组时,数组大小必须是常量,不能使变量或变量表达式
因此,n不是一个常量,只是一个不能通过n来修改其值的一个变量。所以不能用它来给定数组的大小。
在VC++中常量和变量有什么区别?
C++数据类型之一:常量和变量一、文字常量:常量之所以称为“文字常量”,其中“文字”是指我们只能以它的值的形式指代它,“常量”是指它的值是不可变的。同时注意一点:文字常量是不可寻址的(即我们的程序中不可能出现获取所谓常量20的存储地址&20这样的表达式),虽然常量也是存储在内存的某个地方,但是我们没有办法访问...
C 表达式必须含有常量值?
定义数组的时候, 中括号里的必须是常量, 而不能是变量, 也就是说你要么直接写一个数, 要么用#define宏定义一个符号, 而不能使用任何形式的变量(const声明的也是变量, 只不过它的值不能改变)
...studio c++二维数组定义的问题,为啥程序说表达式必须含有常量值呀...
因为在这个函数里,n是参数,作为变量处理了。你要把a改成动态分配,new或者malloc
为什么有的C++编译器里数组的大小是变量时不会出错,有的会出错.
这个的原因是有两方面:C++标准里明确规定:数组的初始化必须是常量、或者常量表达式。所以上面的代码只在一部分编译器里面能够编译通过,如:MinGW 微软的编译器是不能编译通过这个的,因为微软的编译器没有在标准的基础上进行扩展,但是MinGW编译器却扩展了数组中的初始化方式,所以如果楼主想要编译一个跨...
c++ 用户输入 2个值 定义二维数组 但是报错
在c++中时不支持变量作为数组长度参数的,如 int n=10;byte bs[n]; 这样写会提示编译错误”表达式必须含有常量值“。虽然用变量声明数组大小会报编译错误,但是可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:int length = 10;int * varArray;3varArray = new int[length];这样...
什么用const说明的常量不能用来定义一个数组的初始大小?
并不是所有的常量都可以用来定义一个数组的初始大小,在C程序中,只有C语言的常量表达式才能用来定义一个数组的初始大小。然而,在C++中,情况有所不同。一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:...
声明数组时,数组名后是用方括号括起来的常量表达式
在C++、Java等编程语言中,声明数组时,数组名后是用方括号括起来的常量表达式。这个常量表达式被称为数组的长度,它定义了数组可以存储的元素数量。例如,在C++中,我们可以这样声明一个整数数组:intarr[10];。这里,arr是数组名,10是数组的长度,表示这个数组可以存储10个整数。同样,在Java中,我们...