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 的尾元素
- }
来源: http://www.bubuko.com/infodetail-2726611.html