1. 程式人生 > >C++和Java動態開闢二維陣列

C++和Java動態開闢二維陣列

C++:

以int a[n][m];為例:

開闢記憶體:
a = (int**)new int *[n]; //申請a陣列行向量陣列
for(i = 0; i < n; i++)//申請a陣列行的儲存空間
   a[i] = new int[m];


釋放記憶體:
for(i = 0; i < m; i++)   //釋放每個a[i]行申請的空間
   delete[] a[i]; 
delete[] a;//釋放a指標指向的行向量空間

=================================================================================================

JAVA:

public class Lesson{  

    public static void main(String [] args){      
        //二維陣列的宣告方式:  
        //資料型別[][] 陣列名稱 = new 資料型別[長度][長度];  
        //資料型別[][] 陣列名稱 = {{123},{456}} ;  
          
        /* 
        int [][] arr = {{123},{456}};  //定義了兩行三列的二維陣列並賦值 
        for(int x = 0; x<arr.length; x++){  //定位行 
            for(int y = 0; y<arr[x].length; y++){  //定位每行的元素個數 
                System.out.print(arr[x][y]); 
            } 
            System.out.println("/n"); 
        } 
        */  
        int [][] num = new int [3][3]; //定義了三行三列的二維陣列  
        num[0][0] = 1; //給第一行第一個元素賦值  
        num[0][1] = 2; //給第一行第二個元素賦值  
        num[0][2] = 3; //給第一行第三個元素賦值  
          
        num[1][0] = 4; //給第二行第一個元素賦值  
        num[1][1] = 5; //給第二行第二個元素賦值  
        num[1][2] = 6; //給第二行第三個元素賦值  
          
        num[2][0] = 7; //給第三行第一個元素賦值  
        num[2][1] = 8; //給第三行第二個元素賦值  
        num[2][2] = 9; //給第三行第三個元素賦值  
        for(int x = 0; x<num.length; x++){  //定位行  
            for(int y = 0; y<num[x].length; y++){  //定位每行的元素個數  
                System.out.print(num[x][y]);  
            }  
            System.out.println("/n");  
        }  
    }  
}  
//陣列值arr[x][y]表示指定的是第x行第y列的值。  
//在使用二維陣列物件時,注意length所代表的長度,  
//陣列名後直接加上length(如arr.length),所指的是有幾行(Row);  
//指定索引後加上length(如arr[0].length),指的是該行所擁有的元素,也就是列(Column)數目。  


//定義二維陣列寫法1  
class numthree
{
public static void main(String[] args)
{
float[][] numthree;             //定義一個float型別的2維陣列
numthree=new float[5][5];       //為它分配5行5列的空間大小
}
}


//定義二維陣列寫法2   定義的同時分配空間大小
class numfour
{
public static void main(String[] args)
{
   short[][] numfour=new short[5][8]; 
//定義一個short型別的陣列同時為它分配5行8列的空間大小
}
}


//定義二維陣列寫法3        不規則陣列
class numfive
{
public static void main(String[] args)
{
long[][] numfive=new long[5][];     //定義一個long型別的不規則陣列
num[0] = new long[5];             //為第1行分配5列
num[1] = new long[6];             //為第2行分配6列
num[2] = new long[7];             //為第3行分配7列
num[3] = new long[8];             //為第4行分配8列
num[4] = new long[9];             //為第5行分配9列
num[0][4] = 10000000000L;         //1行5列=10000000000
num[1][5] = 20000000000L;         //2行6列=20000000000
num[2][6] = 30000000000L;         //3行7列=30000000000
num[3][7] = 40000000000L;         //4行8列=40000000000
num[4][8] = 50000000000L;         //5行9列=50000000000
//列印輸出一個沒有定義陣列元素的陣列 java會自動將他初始化值為0
}
}


//定義2維陣列寫法4    定義的同時賦初始值
class numsix
{
public static void main(String[] args)
{
double[][] numsix={{1.111D,2.222D,3.333D},{4.444D,5.555D,6.666D}};//定義double型的陣列分配3行3列的空間同時賦值
}
}


//定義2維陣列寫法5   定義不規則的2維陣列同時賦初始值
class numseven
{
public static void main(String[] args)
{
int[][] numseven=new int[][]{{10,20,30},{40,50},{60}};
}
}


//定義2維陣列寫法6   定義不規則的2維陣列同時賦初始值;
class numeight
{
public static void main(String[] args)
{
int[][] numeight={{100,200,300,400},{500,600,700,800},{900,1000,1100,1200,1300}};
}
}