一、二維數組的定義及初始化
二維數組可以看做是一個由若干一維數組組成的數組,我們可以通過定義一個二維數組來表示一個行列固定、元素類型相同的矩陣。在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
微信掃一掃
支付寶掃一掃