数组在定义的时候就需要固定长度,长度是不可变的。不过二维数组有点特殊,在定义的时候后面一个方框可以空着,因为后一个框里装的是一维数组的个数,同一个二维数组中的一位数组存在不等长的情况,所以后一个可以不定长。

数组是计算机编程语言上,对于“Array"的中文称呼,是用于储存多个相同类型数据的集合。将相同数据类型的元素按一定顺序排列的集合,把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。组成数组的各个变量成为数组的分量,也称为数组的元素

java中数组的长度可以用普通变量而不必须是常量是么???

是的。

在Java中,可以使用变量定义数组。

int size=100;

int[] num = new int[size];

这是可以的;

但是在C/C++,这样是不可行的,除非加const

怎么用C语言定义一个无限长的数组?

是的,c中数组定义时要指定大小。

当然,万事也不是绝对的。例如:1作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。2当为字符串数组时,char ST[]="hello word"这儿定义了一个ST字符数值,不需要你自己去指定大小,系统会自动生成长度为11

js中数组的长度不固定,元素固定该如何定义

C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。

比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。

但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。

1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。

通过下面例子来理解该方法:

#include <stdioh>

#include <stdlibh>

int main()

{

   int size=100;//最初为100个元素空间。

   int a = NULL;

   int i = 0;

   

   a = malloc(sizeof(int)  size);

   if(a == NULL) return -1;

   while(scanf("%d", a+i) == 1)//循环向a中输入数据,直到输入非数值字符为止

   {

       i++;

       if(i == size)//数组空间不足

       {

           size =2; //将数组空间扩大二倍, 也可以改用size+=100;之类的操作,使size每次增加固定值。

           a=realloc(a,size);//分配新的空间

           if(a==NULL)

           {

               return -1;//这种情况下运行载体(如PC)内存不足以提供,中断程序。

           }

       }

   }

   

   if(a) free(a);//对申请的内存进行释放。

   return 0;

}

从以上程序可以看到,这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度。 直到占满所有剩余空间。

如果到占满所有空间还是无法存下数据,那么是硬件无法支持了。

所以这种方法可以做到软件意义上的无限大数组空间。

但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法。

2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。

java里面定义一个数组,不给定长度,可以使用吗

var array=[];表示元素的长度不固定,可以动态添加你想加入的元素

array[0]=你要填入的固定元素;

array[1]=你要填入的固定元素;

定义时当然可以:例如

int[]

a;

但是要把它初始化成为一个真正意义上的数组就必须设定长度:

int

[]

a

=

new

int[10];

这时就只能改变数组里的数值而不能改变它的长度了