C++笔记之使用new动态分配多维数组

之前编写代码时,想要在使用标准输入的值来开辟一个数组

int num;
scanf("%d",&num);
int a[4][num][3];

但VS编译未通过,报错:表达式必须含有常量值
这是由于VS所使用的C++编译器CL不允许使用变量作为数组的长度定义数组。而GCC编译器是允许的。

如果是要动态 定义一个 一维数组是较为简单的:
int *a = new int[num];
初始化
memset(a,0,num*sizeof(int));
释放空间:

delete []a;


如果是 二维数组定义并初始化一个a[i][j]的数组则需要:
int **a = new int *[i]; for(int x = 0;x<i;x++) { a[x] = new int[j];
     memset(a[i],0,j*sizeof(int)); }

插销
for(x=0;x<i;x++)
{
     delete []a[x];
}
delete []a;

三维数组与二维数组类似
定义:
int ***a  = new int**[k1];
for(int i=0;i<k1;i++)
{
     a[i] = new int*[k2];
     for(j=0;j<k2;j++)
         a[i][j] = new int[k3];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值