指针篇
4.数组a 的性质
int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}}
int 型数据在KEIL编译环境下,占2字节内存
表示形式 |
含义 |
地址 |
a |
二维数组名,指向一位数组a[0],即0行首地址 |
设2000 |
a[0]、*(a+0)、*a |
0行0列元素地址 |
2000 |
a+1,&a[1] |
1行0列元素地址 |
2008 |
a[1]、*(a+1) |
1行0列元素a[1][0]的地址 |
2008 |
a[1]+2、*(a+1)+2、&[1][2] |
1行2列(即a[1][2])元素地址 |
2012 |
*(a[1]+2)、*(*(a+1)+2),a[1][2] |
1行2列(即a[1][2])元素值 |
元素13 |
(1)为什么*(a+1)表示第一行的首地址呢?
答:*(a+x)==a[X]; 两者等价。
(2)那么C语言中是怎么造成*(a+x)与a[X]完全等价呢?
答:在一位数组中,*a就是a[0],a+1指向a[1],a+2指向a[2],a+3指向a[3],也就是说
*(a+1)、*(a+2)、*(a+3)分别是a[1]、a[2]、a[3]。在实际代码生成机械码的关系中,两个效应完全等价。
下次更新时间2014.09.12
新的理解和见解可留言相互交流,共同学习
时间: 2024-10-08 18:04:10