二维数组存储结构讲解
时间: 2023-12-09 17:33:59 浏览: 81
二维数组在内存中的存储
维数组在内存中是按照行主序进行存储的,从内存的角度上看,二维数组本质就是一个一维数组。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组。而二维数组的名字代表二维数组第0行的首地址(注意它是代表一行元素的首地址,而不是第0行第0列元素的首地址,虽然是相等的,但不能这么理解,所以在没有强制转换的情况下,二维数据要么通过行指针进行参数传递,要么通过二维指针进行参数传递)。在内存中,二维数组的每个元素都是按照行优先顺序存储的,即第一行的所有元素存储在一起,第二行的所有元素存储在一起,以此类推。因此,访问二维数组的元素时,需要通过行指针或二维指针进行参数传递,以便正确地计算元素的地址。
下面是一个C语言的例子,演示了如何打印一个二维数组的每个元素的地址:
```c
#include <stdio.h>
int main() {
int arr[3][4] = { {1,1,1,1} ,{2,2,2,2} ,{3,3,3,3} }; //表示三行四列
for (int i=0;i<3;i++) {
for (int j = 0; j < 4; j++) {
printf("arr[%d][%d]=%p\t",i,j,&arr[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文