一个关于二维数组与指针的问题,打印出来的结果很奇怪,希望得到解答。

我在复习时突然想到了关于二维数组指针的问题,就顺手写了个程序,结果很奇怪。希望能帮我解决一下。顺便讲一下关于二维数组指针的知识,感谢!

img

供参考:

#include <stdio.h>
int main()
{
    int i, j, ch[2][3] = { {1,2,3},{4,5,6} };
    int* p = &ch[0][0];
    for (i = 0; i < 2; i++)
        for (j = 0; j < 3; j++)
            printf(" %d", *(p + i * 3 + j));
    return 0;
}

你这段代码应该无法编译成功吧,ch[0][0]是一个int类型的值应当无法赋值给int*类型的p的