1 二维数组的概念
2 二维数组用法和二维数组的偏移
1 二维数组 的概念 :二维数组实则就是双重的一维数组叠加而成的 而一维数组 就是 存放 元素的一个变量 那么二维数组 就是 存放元素的变量 变量 里面 又存有 元素 的变量
2二维数组用法 和二维数组的偏移
常规的写法
%#x 是打印完整的十六进制 arr[i][j] 为什么是值呢(二维数组中 ) 因为取值 &arr[i][j] 是取的地址 很多人 应该 这样理解 *&arr[i][j] 其实这样也是思路对的 但是 不可以这么写 我们这里的 *和&
是可以相关消除掉的 也就是 最后可以写成 arr[i][j] 这个是第一种 用法
下面介绍第二种
知道第二种之前 我们需要 理解
一维数组名 就是 数组首地址 列如 arr[2] 写法1 &arr[0] 2 arr 1 2 都是可以的
他的偏移量 不加加 就是 首地址 加n 就是 偏移 n个位置 可以把它想成 一把游标卡尺
它不移动 (不偏移)就是 在原点 不然就是有偏移
二维数组 就是 双重的一维数组 也说明了它存在双重的地址 双重的数组名 并且 是层层递进的
二维数组 可以 把它想成是 行列式 行名就是 行首地址 列名就是 列首地址
arr[2][3] 有 两行 三列 就是有 两个行地址 三个列地址 arr[0] arr[1] 分别是 第1行的首地址 第 2 行首地址就是 arr[1] 列也是一样的概念
代码
arr[0] 因为是 第1行首地址 然后偏移 2 个位置 这时还是地址 最后 * 就得到了 值(第一个prtinf)
*arr 因为 arr 就是 二维数组名 也就是第一行的首地址 *arr 得到的是 第一行的列首地址地址 在偏移 2个位置 最后 * 得到值 (第二个printf)
最后 两个pritnf的值是一样 的 不懂的 慢慢体会
冲冲冲冲冲