- 二维数组的存储顺序、表示方法
先说一维数组:
1. 数组首地址 也是 第一个元素的首地址
1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int arr[5] = {}; 6 cout << "arr = " << arr << endl; 7 cout << "&arr[0] = " << &arr[0] << endl; 8 9 return 0; 10 }
res:
可以看到 arr 和 &arr[0] 的内容一样。
2. 下一个元素的地址为 前一个元素的地址+元素类型大小
经试验,下一个元素的地址为 前一个元素的地址+1,编译器会自动推导元素类型大小
1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int arr[5] = {1,2,3,4,5}; 6 cout << "&arr[0] = " << &arr[0] << endl; // 数组首地址; 第一个元素的地址 7 cout << "*(&arr[0]+4) = " << *(&arr[0] + 4) << endl; // 第五个元素的值 8 cout << "&arr[0]+4 = " << &arr[0] + 4 << endl; // 第五个元素的地址 9 cout << "&arr[1] = " << &arr[1] << endl; // 第二个元素的地址 10 cout << "*(&arr[0]+1) = " << *(&arr[0] + 1) << endl; // 第二个元素的值 11 12 return 0; 13 }
res:
二维数组:
存储顺序:
假设有一个二维数组定义如下:
int iArray[2][3]={};
那么它的存储结构如下:
二维数组按行顺序存储(先第1行,再第2行、第3行...)
再看一个示例:
1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int arr[2][3] = { 6 {1,2,3}, 7 {4,5,6}, 8 }; 9 cout << "&arr[0][0] = " << &arr[0][0] << endl; 10 cout << "&arr[0] = " << &arr[0] << endl; 11 cout << "arr[0] = " << arr[0] << endl; 12 cout << "&arr[1][0] = " << &arr[1][0] << endl; 13 cout << "&arr[1] = " << &arr[1] << endl; 14 cout << "arr[1] = " << arr[1] << endl; 15 16 return 0; 17 }
res:
arr[0] == &arr[0] == &arr[0][0]
arr[1] == &arr[1] == &arr[1][0],依次类推...
arr[n] 或者 &arr[n] 就是 arr[n][0] 元素的地址
(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)
标签:arr,int,元素,存储,二维,数组,地址 From: https://www.cnblogs.com/wjjgame/p/17703207.html