如何定义动态一维二维数组

首先,C++是不允许定义不确定数组的,但是,有时候我们并不确定所需要的数组的长度,我们所需要的数组的长度根据输入的不同而不同,所以,这时候定义一个动态长度的数组十分必要,但是,C++是不支持定义不确定长度的数组的。

那么问题来了,为什么C++不支持定义不确定长度的数组呢?当我们用如下代码时

int length;
int array[length];
编译器会报错。为什么会报错呢?因为编译的过程是是给代码分配内存空间的过程,编译器不知道length到底是多大,也就不知道给array[length]分配多大的内存空间。

那我们如何定义一个我们也不知道长度的数组呢?答曰:用指针。我们定义指针时,编译器只是分配了一个sizeof(*p)长度的空间,实际上,数组的空间还没有分配,只是在使用的时候才临时分配。

1、下面先定义一维动态数组:

int length;
int *p=new int[length];
数组定义完毕。

那么,如何对数组进行初始化呢?很简单,跟普通的数组初始化方式差不多。

for(int i=0;i<length;++i)
    p[i]=i;
最后不要忘记释放内存delete[] p。


 2、下面定义二位动态数组

二维数组的定义只是在一位数组的基础上加了个指针而已,即:指向指针数组的指针。
	int col,row;
	cin>>col>>row;
	int **p=new int*[col];
	for(int i=0;i<col;++i)
		p[i]=new int[col];//建立一维数组每个元素指针指向的一维数组
	for(int i=0;i<col;++i)
		for(int j=0;j<row;++j)
			p[i][j]=j;
	for(int i=0;i<col;++i)
	{	for(int j=0;j<row;++j)
			cout<<p[i][j];
		cout<<endl;
	}
最后,同样不要忘记释放内存空间。
<pre name="code" class="cpp">for(int i=0;i<col;++i)
    delete[] p[row];//如果没有前一个[]则只会释放二维数组一个元素指向的一维数组对应的空间


 
 
注意:只要用到new就要用delete


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值