c语言中为什么二维数组中前一个数组的最后一个int类型与后一个数组的第一个int类型地址差12个字节
时间: 2023-05-27 10:06:18 浏览: 39
在C语言中,二维数组是按行存储的,也就是说,每一行都是连续存储的。当定义一个二维数组时,可以使用以下语法:
```c
int arr[m][n];
```
其中,m表示数组的行数,n表示数组的列数。在内存中,二维数组的存储方式如下图所示:
```
+------------+------------+------------+------------+
| arr[0][0] | arr[0][1] | ... | arr[0][n-1]|
+------------+------------+------------+------------+
| arr[1][0] | arr[1][1] | ... | arr[1][n-1]|
+------------+------------+------------+------------+
| ... | ... | ... | ... |
+------------+------------+------------+------------+
| arr[m-1][0]| arr[m-1][1]| ... | arr[m-1][n-1]|
+------------+------------+------------+------------+
```
在上图中,每个方格代表一个int类型的元素,每一行是连续存储的。因此,当前一个数组的最后一个int类型与后一个数组的第一个int类型地址差12个字节时,可以解释为前一个数组的末尾有3个int类型的元素,每个元素占用4个字节,因此地址差为12个字节,而后一个数组的开头正好是这3个int类型元素的末尾。