动态数组

时间:2024-07-27 22:59:13编辑:笔记君

c++中怎样定义动态数组

1、new 动态定义数组 2、因为new 就是用来动态开辟空间的,所以当然可以用来开辟一个数组空间。这样,下面的语句:int size=50; int *p=new int[size]; //是正确的3、但是二维动态数组能不能也这样定义呢 int size=50,Column=50; int (*p)[Column]=new int [size][Column](1)首先 new int[size][Column] 就是动态生成时确定的,所以它没有错,那么就是 int(*p)[Column],这句有问题了,这句为什么不对呢, 那是因为,这是一个定义语句,而定义语句先经过编译器进行编译,当编译器运行到此处时,发现Column 不是常数,因此不能通过编译。 (2)而之所以编译器认为Column 不是常数,是因为编译阶段,编译器起的作用是查语法错误,和预分配空间,它并不执行程序,因此,没有执行那个赋值语句(只是对这个语句检查错误,和分配空间),因此编译阶段,它将认为column 是个变量。所以上面的二维数组定义是错误的, 它不能通过编译。改成这样:int size=50 int (*p)[50]=new int [size][50]便正确了。

如何定义一个动态的数组?

利用这一特性定义一个指针数组。int **p= new int*[size];//定义指针数组 int *p[5];// 假若知道二维数组的行数为5然后对指针数组中的每一个指针分配一个一维数组空间,这样便动态定义了二维数组事实上,我认为指针数组的主要用途,就在于动态定义多维数组for(int i=0;i<size;i++){p[i]=new int[Column];}运行完毕后,一个二维数组便被动态的成功建立。动态数组,是相对于静态数组而言。静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。而动态数组则不然,它可以随程序需要而重新指定大小。动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配。程序员自己负责释放内存。为什么要使用动态数组?在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用静态数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数结合指针可以按需要动态地分配内存空间,来构建动态数组,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。动态数组与静态数组的对比对于静态数组,其创建非常方便,使用完也无需释放,要引用也简单,但是创建后无法改变其大小是其致命弱点!对于动态数组,其创建麻烦,使用完必须由程序员自己释放,否则严重会引起内存泄露。但其使用非常灵活,能根据程序需要动态分配大小。

Java的动态数组怎么做

Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList。下面介绍一下ArrayList作为Java动态数组的用法。
Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList。下面介绍一下ArrayList作为Java动态数组的用法。
1.语法:add()是添加一个新的元素,
remove()删除一个元素,
size()获得ArrayList的长度。
ArrayList的下标是从0开始。
2.示例代码
import java.util.ArrayList;

public class JavaArrayList {
public static void main(String[]args) {
//Java动态数组的初始化
ArrayList al=new ArrayList();
//向Java动态数组中添加数据
al.add("a");
al.add("b");
al.add("c");
//输出Java动态数组
for(int i=0;i<al.size();i++) {
String alEach=(String)al.get(i);
System.out.println(alEach);
}
//删除数组中的某个元素,删除第二个元素
al.remove(1);
//修改Java动态数组,把新的元素放到第二个位置
al.add(1,"2");
//输出Java动态数组
for(int i=0;i<al.size();i++) {
String alEach=(String)al.get(i);
System.out.println(alEach);
}
}
}
输出如下:
a
b
c
a
2
c
PS:java的一维动态数组一般是使用集合的:ArrayList,HashMap等
泛型:
ArrayList a = new ArrayList();
T是你数组里 存的类型 比如String类型的 比如int的
你可以去看下泛型 就明白了


上一篇:jimmyblack

下一篇:c130