而动态数组长度可以随程序的需要而重新指定大小。对于这种问题,用静态数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数结合指针可以按需要动态地分配内存空间,从而构建动态数组,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。检查动态内存是否分配成功。所以给array[][]申请内存,程序段如下:3.动态构建三维数组的内存分配函数说明如下:*pArr:指向......
2023-11-18
在Java中创建数组需3个步骤:数组的声明;数组的内存分配;数组的初始化。
1.一维数组的声明
数组的声明方式和一般变量的声明方式非常类似,需要声明一个数组变量名及其数据类型,并用[]与一般的变量进行区别。声明一维数组的格式如下:
或
其中,type(数据类型)可以为Java语言中的任意数据类型,包括基本数据类型和对象类型;arrayName(数组名)必须为一个合法的标识符;[]是数组标志,指明该变量是一个数组类型的变量,既可以放在数据类型的后面,也可以放在数组名之后。例如,语句“int intArray[];”声明了一个整型数组intArray,该数组中的每个元素都为整型数据。
一个数组声明语句可同时声明多个数组变量。例如:
2.一维数组的内存分配
需要注意的是,与C、C++不同,Java在声明数组时不为数组元素分配内存,因此不用在[]中指出数组元素的个数(即数组长度)。Java使用new运算符创建数组,其格式如下:
其中,arraySize指明数组的长度。例如:
通常,可以将数组的声明和创建合并为一条语句,即在声明数组的同时用new运算符为数组分配内存空间。其格式如下:
例如:
用new运算符为数组分配的内存空间是动态的,可根据程序的需要随时用new运算符为已分配空间的数组重新分配空间。需要注意的是,对数组再次动态分配内存空间时,该数组原有的数据将会丢失。(www.chuimin.cn)
3.一维数组的初始化
在使用new运算符创建数组时,若未指定数组元素的初值,系统将为数组的每个元素赋默认值。对于整型数据,数组元素的默认值为0;对于浮点型数据,数组元素的默认值为0.0;对于布尔型数据,数组元素的默认值为false;对于字符型数据,数组元素的默认值为'\u0000';对于所有的对象类型(包括字符串类型)数据,数组元素的默认值为null。
在编写代码时,通常需要根据实际情况对数组进行初始化。数组的初始化方式有以下两种。
(1)在声明数组的同时进行初始化,或通过分别为数组元素赋值来对数组进行初始化。例如:
采用这种方式时,可以不使用new运算符。该语句声明并创建了数组a,同时对数组进行了初始化,使a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5。此时,数组的长度由{}中数据的个数决定。
(2)在声明并创建数组后,通过为每个元素分别赋值来对数组进行初始化。例如:
4.一维数组的引用
当定义了一个数组,并为它分配了内存空间后,就可以引用该数组中的每个元素了。数组元素的引用方式如下:
其中,index为数组下标,它可以是整型常量或表达式,index的数据类型只能为short、int、byte,不能为long。数组下标从0开始,一直到数组长度减1。
在Java语言中,为了保证安全性,在引用数组元素时要对其进行越界检查。若数组元素的下标小于0、大于或等于数组长度,则将产生异常。
此外,由于数组在Java语言中被作为一个对象来处理,因此每个数组都有一个length属性,其值为数组的长度,可以通过“数组名.length”的形式引用。例如,a.length指明数组a的长度。在实际编程中,提倡尽量使用数组的length属性值来指明数组的上界元素,这样可以有效避免数组越界情况,且能使数组的处理代码具有良好的可复用性,能够适应数组长度的变化。
有关Java面向对象程序设计的文章
而动态数组长度可以随程序的需要而重新指定大小。对于这种问题,用静态数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数结合指针可以按需要动态地分配内存空间,从而构建动态数组,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。检查动态内存是否分配成功。所以给array[][]申请内存,程序段如下:3.动态构建三维数组的内存分配函数说明如下:*pArr:指向......
2023-11-18
一维数组是最简单的数组,其逻辑结构为线性表。一维数组必须先定义才能使用。例如:2.一维数组的初始化数组定义后,系统为其开辟所需的存储单元,但是如果未经初始化,其存储单元中的数值是不确定的,即随机数。数组元素的初值必须依次放在一对大括号内,各初值之间用逗号隔开。......
2023-10-21
将一维数组看成一个整体作为函数参数时,用数组名作为函数的形式参数或实际参数。一维数组作为函数的形式参数本质上是一个指针变量,所以在描述上不需要指定形参数组的长度。上面程序中函数sum的原型为:int sum;,表示了该函数在被调用时应该传递一个整型数组给一维数组形式参数v[],数组的长度由整型变量n表示,函数sum的功能是将用形式参数v表示的长度为n的数组元素求和。......
2023-11-20
图8.3用指针修改数组元素的值使用指针变量表示数组元素示例。另外,在输出数组值的操作中,首先让指针变量p指向数组0号元素,然后通过循环控制中的p++运算,使得指针变量p依次指向a数组的其他元素,通过*p的方式表达数组元素值。程序执行的结果为:0010000如果有两个指针变量分别指向同一个数组的两个不同元素,则两个指针变量之间的距离表示了它们之间的差距有多少个数组元素。......
2023-11-20
实现一维动态数组的基本步骤为:①定义合适数据类型的一级指针变量。③将动态分配存储区域的首地址转换为所需要的指针形式赋值给对应的指针变量。④将指针变量名作为一维数组名操作。为了模拟数据,程序中仍然要求被排序数组用随机函数生成。例8.18的程序除了被处理的数组是动态创建的之外,程序的功能和结构在第4章中已经进行了讨论,请读者参照第4章的知识自行分析。使用动态一维数组时,需要注意和直接定义一维数组之间的差异。......
2023-11-20
当指针变量指向一维数组的首元素时,称为指向了一维数组。所以,函数中一维数组形式参数可以用同类的指针形式参数替代;同理也可以用指向特定数组的指针变量来传递数组类实际参数。特别需要注意的是,函数的形式参数无论使用的是数组名形式还是指针变量形式,本质上都是一个指针变量,在被调函数中既可以将它当作数组名使用也可以将它当作指针变量使用。......
2023-11-20
因此,C语言提供内存管理函数,可以按需要动态分配内存空间,也可以把不再使用的空间收回。分配一块区域,输入一个学生数据。整个程序包含了申请内存空间、使用内存空间、释放内存空间三个步骤,实现了存储空间的动态分配与管理。......
2023-10-21
,常数n};例如:int a1[5]={1,2,3,4,5};一维数组的初始化可以用以下方法实现:①数组初始化时,给出全部数组元素的初始值。②输出数组元素值。......
2023-11-20
相关推荐