二维数组经典地址问题

来源:互联网 发布:java中反射的应用 编辑:程序博客网 时间:2024/06/05 07:25
 #include <stdio.h>


int main()
{
    int a[5][5];
    int(*p)[4];   //数组指针
    
    p = a;
    
    printf("%d\n", &p[4][2] - &a[4][2]);  //j结果为-4;

}

int a[5][5]   a的类型为int(*)5  &a[4][2]为第22个数的地址,

    int(*p)[4];   //数组指针  &p[4]为第四行的数组(一行4个数)  &p[4][2] 为第四行第2个数;

所以&p[4][2] - &a[4][2] //j结果为-4;


*(*(a+i) + j))  等价于a[i][j]

0 0