c语言动态生成二维数组,C++中二维数组的动态创建与处理(附C语言版)

C++中用new动态创建二维数组的格式一般是这样:

TYPE (*p)[N] = new TYPE [][N];

其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。

还有一种方法,可以不指定数组的列数:

int **p;

p = new

int*[10]; //注意,int*[10]表示一个有10个元素的指针数组

for (int i = 0; i != 10; ++i)

{

p[i] = new

int[5]; //或者*(p+i) = new

int[5];

}

这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素(均为指针)指向一个有5个元素的数组,这样就构建了一个10行5列的数组。

当数组使用完毕,释放空间的代码是:

for(int i = 0; i != 10; i++)

{

delete[]

p[i];

}

delete[] p;

处理二维数组,可以用降维或是二维法。

降维法是用一位数组来接受二维数组,将二维元素的首地址&a[0][0]作为参数,传递给函数,函数用int

*接受。

二维法就直接用二维数组来接受,但是需要指定列数。

另附C语言版动态二维数组的定义和释放

#include

#include

int main()

{

int n1,n2;

int **array,i,j;

puts("输入一维长度:");

scanf("%d",&n1);

puts("输入二维长度:");

scanf("%d",&n2);

array=(int**)malloc(n1*sizeof(int*)); //第一维

for(i=0;i

{

array[i]=(int*)malloc(n2* sizeof(int));//第二维

for(j=0;j

{

array[i][j]=i+j+1;

printf("%d\t",array[i][j]);

}

puts("");

}

for(i=0;i

{

free(array[i]);//释放第二维指针

}

free(array);//释放第一维指针

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值