动态申请三维数组

时间:2021-05-13 00:15:32


//构建3维矩阵 
double*** data3d;//k是最外层(Z),i次外层(y),j是内层(x) 
data3d =new double**[volume_depth];  
for(int k=0; k<volume_depth; k++)  
{  
    data3d[k] = new double*[volume_height]; 
    for   (int i=0; i <volume_height; i++)  
        data3d[k][i] = new double[volume_width]; 
}  

给矩阵附初值:


//给三维矩阵赋值 
for (int k=0; k<volume_depth; k++) 

    for (int i=0; i<volume_height; i++) 
    { 
        for (int j=0; j<volume_width;j++) 
        { 
            data3d[k][i][j]=0; 
            data3d1[k][i][j]=0; 
        } 
    } 

 

www.2cto.com
三维动态数组的空间释放(由内向外):


for(int k=0; k<volume_depth; ++k)  
{  
 for   (int i=0; i <volume_height;++i)  
 { 
  free(data3d[k][i]); 
 } 
 free(data3d[k]); 
}  
free(data3d); 

三维矩阵是按照列顺序存储,先存第一层k=0中的第一列i=0的每个元素j。