用指针将二维数组转换为一维数组为什么不成功

img


使用指针将二维数组转换为一维数组为什么不成功,结果显示不出来

你现在是按行的,方向错了,要用2个循环,按列赋值给数组b,要保证b数组足够大。j<m*n,=越界了。

void fun(int a[][4], int *b, int m, int n)
{
    int *p = &a[0][0];
    for (int i = 0; i < n; i++) // 列
    {
        for (int j = 0; j < m; j++) // 行
        {
            *b = *((p + j * n) + i);
            b++;
        }
    }
}

int *p = (int *)a;
i<=m*n改为 i<m*n