本帖最后由 VisualEleven 于 2013-08-14 16:07:02 编辑

解决方案 »

  1.   

    同一类型的指针相减的结果,指针之间的该类型的数据个数,不是地址值直接相减。p = a 应该编译通不过才对,需要强制转换,这两个指针a,p类型不一致.
    int a[5][5];
    int (*p)[5]=a;
    才行吧。
    int (*p)[4];
    p= (int (*)[4] )a; //这也有可能通不过。p= (int (*)[4] )(void*)a; //这就差不多了。
      

  2.   

    int x = (char*)&a[4][2]-(char*)&p[4][2];这样的话结果就是16,说明指针的“-”号被重载过了,不是单纯的减,而需要考虑指针的类型。