【共讀Primer】20.<3.6> 多維數組 Page112
阿新 • • 發佈:2018-08-13
for spa rime 遍歷 ostream 語句 聲明 div nbsp
C++中的多位數組,嚴格來說是數組的數組。
int ia[3][4]; //大小為3的數組,每個元素是含有4個整數的數組 // 大小為10的數組,每個元素都是大小為20的數組, // 這些數組的元素是含有30個整數的數組 int arr[10][20][30] = {0}; // 將所有元素初始化為 0
初始化多維數組
int ia1[3][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; // 以下語句等價於上面的初始化 int ia2[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
多維數組的下標引用
// 用多重循環來遍歷多維數組 for(size_t i = 0; i != 3; ++i) { for(size_t j = 0; j != 4; ++j) { cout <<"row is " << i << ",col is " << j << ",value is:"<< ia1[i][j] << endl; } } // 使用範圍for語句進行遍歷 for(auto &row : ia1) { for(auto &col:row) { cout <<"value is:"<< ia1[i][j] << endl; } }
指針和多維數組
對於多維數組中二級元素的聲明需要格外註意,當然我們可以通過auto來代替這種聲明,或者使用typedef來進行一次聲明多次使用。
int ia[3][4]; // 大小為3的數組,每個元素是含有4個整數的數組 int (*p)[4] = ia; // p指向含有4個整數的數組(數組的指針)// int *p[4]; // 整型指針的數組(指針的數組) p = &ia[2]; //p指向ia的尾元素
本節內容的全部代碼
#include <iostream> using std::cout; using std::endl; int main() { int ia[3][4]; //大小為3的數組,每個元素是含有4個整數的數組 // 大小為10的數組,每個元素都是大小為20的數組, // 這些數組的元素是含有30個整數的數組 int arr[10][20][30] = {0}; // 將所有元素初始化為 0 int ia1[3][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; // 以下語句等價於上面的初始化 int ia2[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11}; // 用多重循環來遍歷多維數組 for(size_t i = 0; i != 3; ++i) { for(size_t j = 0; j != 4; ++j) { cout <<"row is " << i << ",col is " << j << ",value is:"<< ia1[i][j] << endl; } } // 使用範圍for語句進行遍歷 通過auto類型來簡化代碼 for(auto &row : ia1) { for(auto &col:row) { cout <<"value is:"<< col << endl; } } int ia3[3][4]; // 大小為3的數組,每個元素是含有4個整數的數組 int (*p)[4] = ia3; // p指向含有4個整數的數組(數組的指針) // int *p[4]; // 整型指針的數組(指針的數組) p = &ia3[2]; //p指向ia的尾元素 }
【共讀Primer】20.<3.6> 多維數組 Page112