数组在定义的时候就需要固定长度,长度是不可变的。不过二维数组有点特殊,在定义的时候后面一个方框可以空着,因为后一个框里装的是一维数组的个数,同一个二维数组中的一位数组存在不等长的情况,所以后一个可以不定长。
数组是计算机编程语言上,对于“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];
这时就只能改变数组里的数值而不能改变它的长度了
相关推荐: