C++和Java動態開闢二維陣列
阿新 • • 發佈:2019-01-01
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}};
}
}