对于上面定义的二维数组,加上和不加上解引用,结果都是一样的,
aa
是int [2][5]
类型,当aa
按指针运算时,aa
退化为指针类型int *[5]
,aa+1
结果是指向数组第二行的首地址(即元素5的地址),其类型仍然是int *[5]
。
对其解引用*(aa+1)
,得到的是int [5]
类型,可以隐式转化为int *
类型,其值仍然是指向数组第二行的首地址
不对其解引用,那么(int*)(aa+1)
相当于强制类型转换,即把int *[5]
类型的指针强制转换为int*
类型的指针,由于二维数组元素在内存是连续排列的,这样强制转换是没有问题的。