1 如 int array1[2][3]=
{ {1,2,3},
{2,3,4}
};
int (*a) [3] = array;
然后 关于指针的地址的访问 大家要注意
比如 我们 要访问 array[1][2];如果用指针的写法为 a[1][2];
*(*(a+1)+2);
*(a[1]+2)
1 在这里a表示数组的地址,*a,表示访问a的地址,也就进入了a[0]的地址,在*一下,就是**a,表
示访问a[0][0]的数值,说到这里,也就表面了如果要访问二维数组的值,是必须加入两个**,才 能访问
2 然后 我们在看,前面我定义*a的时候,为什么要在它后面加了[3]是什么意思呢?
这是要表明,当我 a+1,的时候,他是直接跳3个元素的地址的,其中int 为4个字节,也就是一下子
跳12个字节,如果我定义(*a)[5]等于一下跳五个,也就是20个字节
3 然后我们 *(a+1),表示直接进入到了array[1]的地址,然后在*一下就表示直接访问a[1][0]了
如果我们在这个时候*(a+1))+1,就不再表示跳12字节了,而是在array[1]的基础上加四个字 节,进入第二个元素,而不是跳到二维的第二组,也就是array[1][1],在*一下*(*(a+1)+1)
也就是表示进入访问array[1][1],记住这个时候,括号一定不要漏掉,漏掉一个括号,可能
访问的地址就不对了,快捷方便的话,就直接 a[X][X],可以把*号省掉,直接访问了array[x] [x]的数据 |
|