- 存储顺序:
- 在C语言中,二维数组
int arr[3][4];
在内存中是按行优先顺序存储的。即先存储第一行的元素,接着存储第二行的元素,最后存储第三行的元素。具体来说,先存储arr[0][0]
,arr[0][1]
,arr[0][2]
,arr[0][3]
,然后是arr[1][0]
,arr[1][1]
,arr[1][2]
,arr[1][3]
,最后是arr[2][0]
,arr[2][1]
,arr[2][2]
,arr[2][3]
。
- 通过指针按存储顺序遍历:
#include <stdio.h>
int main() {
int arr[3][4];
int *ptr = &arr[0][0];
for (int i = 0; i < 3 * 4; i++) {
printf("%d ", *(ptr + i));
}
return 0;
}
#include <stdio.h>
int main() {
int arr[3][4];
int (*ptr)[4] = arr;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(*(ptr + i)+j));
}
}
return 0;
}