一、二維數組的定義及初始化
二維數組可以看做是一個由若干一維數組組成的數組,我們可以通過定義一個二維數組來表示一個行列固定、元素類型相同的矩陣。在C++中,可以使用兩種方式來定義並初始化一個二維數組:
//第一種方式:明確指定行和列,然後進行初始化 int array1[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; //第二種方式:只指定行數,然後在使用時再定義列數 int array2[3][] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
需要注意的是,在第二種方式中,定義的數組只有行數確定,列數不確定,因此在使用該數組時,需要顯式指定列數。如:int array2[][4] = {…}。
二、二維數組元素的訪問
在訪問二維數組時,通常使用兩個for循環:第一個循環遍歷每一行,第二個循環遍歷當前行的每一個元素。
int array[3][4]; //初始化二位數組 for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { array[i][j] = i * 4 + j + 1; } } //輸出數組中的元素 for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { cout << array[i][j]<< " "; } cout << endl; }
也可以使用指針來訪問二位數組中的元素,需要先定義一個指向二維數組的指針,然後通過指針來訪問數組中的元素。
int array[3][4]; int* p = NULL; //初始化二維數組 for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { array[i][j] = i * 4 + j + 1; } } //使用指針訪問二維數組中的元素 p = &array[0][0]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { cout << *(p + i * 4 + j) << " "; } cout << endl; }
三、二維數組的轉置
在數學中,矩陣的轉置是指將矩陣的行與列交換的操作。在二維數組中,矩陣轉置的操作可以簡單地通過交換每一個元素的下標來實現。
//定義並初始化一個3*4的二維數組 int array[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; //輸出原始矩陣 cout << "原始矩陣:" << endl; for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { cout << array[i][j] << " "; } cout << endl; } //矩陣轉置 for(int i = 0; i < 3; i++) { for(int j = i + 1; j < 4; j++) { int temp = array[i][j]; array[i][j] = array[j][i]; array[j][i] = temp; } } //輸出轉置後的矩陣 cout << "轉置後的矩陣:" << endl; for(int i = 0; i < 4; i++) { for(int j = 0; j < 3; j++) { cout << array[i][j] << " "; } cout << endl; }
四、二維數組之間的賦值和拷貝
在C++中,可以使用等號、memcpy函數或者循環的方式來進行二維數組之間的賦值和拷貝。
//定義並初始化一個3*4的二維數組 int array1[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; //使用等號賦值 int array2[3][4]; array2 = array1; //錯誤的方式,無法通過編譯 //使用memcpy函數拷貝 int array2[3][4]; memcpy(array2, array1, sizeof(array1)); //需要指定拷貝的大小 //使用循環來賦值或拷貝 int array2[3][4]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { array2[i][j] = array1[i][j]; } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/254632.html