之前编写代码时,想要在使用标准输入的值来开辟一个数组
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];
}