指针和多维数组
前言
指针和数组的关系,首先要知道一些人为的表示符号。
- [] 和 * –> 取值 //所以,这两种写法可以替换
- & –> 取地址
- & * [] 同时存在时可以互相抵消
示例
地址 | 值 |
a | a[0] | a[1] | a[2] |
a[0] | a[0][0] | a[0][1] | a[0][2] |
| 1 | 2 | 3 |
a[1] | a[1][0] | a[1][1] | a[1][2] |
| 4 | 5 | 7 |
a[2] | a[2][0] | a[2][1] | a[2][2] |
| 8 | 9 | 10 |
- 往下取值,往上地址
| a |
| a[0] |
| a[0][0] |
重要切换,原来一维数组a[x]是值,而二维数组是地址。Anyway,最终的取值才是值。
等价写法
- a[2] == * (a + 2) //先在a的地址上 +2 ,然后取值
- str = &str[0];
//str是数组的地址,&str[0]是首元素的地址
而规定他们两相等
- 例题a[2][1]
- *(a + 2) = a[2] //在 a地址上 +2 ,然后取值
- 得*(*(a + 2) + 1) // Don’t forget 在二维数组中,(a + 2)还是地址
// 在地址上 +1 再取值
