上次说到C语言的多维数组中a[0][1]的地址表示方法为a[0]+1,那么我们要得到a[0][1]的值,怎么表示呢??那么就是*(a[0]+1),假设,a[0][1]中存放的数字为10,那么*(a[0]+1)=10,前面提到 a+0等于a[0]的首地址,a+1就等于a[1]的首地址,那么,*(a+0)就等于a[0][0]的首地址,就等于a[0],注意,这里的a[0]是一个地址,他代表a[0][0]的首地址,也就是列,所以我们要得到a[0][1]的地址,就要让a[0]+1,(请读者注意地址和值的区别),那么我们知道了a[0][1]的地址是a[0]+1,那么我们要知道a[0][1]的值就是*(a[0]+1),指向这个地址,就是a[0][1]的值。下面作图,能够让读者更清晰的了解:
表示形式 |
含义 |
地址 |
a |
二维数组名,指向一维数组a[0],即第0行的首地址 |
2000 |
a[0],*(a+0),*a |
0行0列元素的地址 |
2000 |
a+1,&a[1] |
1行元素的首地址 |
2008 |
a[1],*(a+1) |
1行0列元素 a[1][0]的地址 |
2008 |
a[1]+2,*(a+1)+2,&a[1][2] |
1行2列元素 a[1][2]的地址 |
2012 |
*(a[1]+2),*(*(a+1)+2),a[1][2] |
1行2列元素 a[1][2]的值 |
元素值13 |
如果有疑问,欢迎共同交流,本文如有错误,欢迎批评指正!