首先,明白一点:当二维数组作为形参时,可以是a【】【4】,但是在函数内部时,是不能用 int a【】【4】的哟! 如果一定要用的话,必须同时初始化,即
int a【】【4】={1,2,3,4,5} 。
接着便是,那这样初始化到底是多少呢?答:因为赋初值是5个元素,所以5/4=1,但除不尽,所以要加1,即实际数组a实质上定义为a[2][4],其内元素为:
1 2 3 4 5 0 0 0 (后面的三个0是系统默认值)
摘自网上的一个贴子的回复:
http://topic.csdn.net/u/20080418/22/9a9eb9b4-62b3-4619-89b7-4be1a0157905.html
定义二维数组char array[x][y]; 1.只定义个一维的就可以了 char *array; array = new char[x*y]; 访问的时候*(array+i*y+j)表示array[i][j] 2.定义一个二维数组 char **array1 array1 = new char *[x]; for(i=0;i<x;++i) array1[i] = new char[y]; ...用的时候可以直接array1[i][j] 注意delete for(i=0;i<x;++i) delete[] array1[i]; delete[] array1; 3.要用的方便,可以在array上加定义一个指针变量。 char *array = new char[x*y]; char **array2; array2 = new char *[x]; for(int i=0;i<x;++i) array2[i] = array + i*y; ...用起来还是array2[i][j],但二维数组已经是一块连续内存,这是和第二种方法区别的地方,感觉这是比较适合用二维数组的习惯。 delete[] array2;
来源:http://zhidao.baidu.com/question/49690576.html
C++怎么给3维数组 申请内存,最后释放?
a=100; b=100; c=100; 代表维数的个数 [a][b][c];回答:
int型为例,int ***ar; ar=new **int[a]; for(int i=0;i<a;i++) ar[i]=new *int[b]; for(i=0;i<a;i++) for(int j=0;j<b;j++) ar[i][j]=new int[c]; 释放:相反过程 for(i=0;i<a;i++) for(int j=0;j<b;j++) delete ar[i][j]; for(int i=0;i<a;i++) delete ar[i]; delete ar;
来一篇较完整的:
http://wenku.baidu.com/view/017a09fa0242a8956bece45e.html
更多内容参考:
http://alphamailpost.blog.163.com/blog/static/20111808120120773253359/