二维数组的定义与删除

首先,明白一点:当二维数组作为形参时,可以是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/



 
 
 
 


你可能感兴趣的:(二维数组的定义与删除)