C 指向合并的二维数组的指针

C 指向合并的二维数组的指针,c,pointers,C,Pointers,这应该是非常简单的,已经花了几个小时,但我仍然无法弄明白这一点 我只需要一个指向合并的2D数组的指针 int a1[2][3] = {{1,2,3}, {4,5,6}}; int a2[4][3] = {{7,8,9}, {6,9,6}, {1,2,3}, {4,5,6}}; // This is fine int (*p)[3] = a1; // compilation error - incompatible types int[3] from type int (*)[3] *(p +

这应该是非常简单的,已经花了几个小时,但我仍然无法弄明白这一点

我只需要一个指向合并的2D数组的指针

int a1[2][3] = {{1,2,3}, {4,5,6}};
int a2[4][3] = {{7,8,9}, {6,9,6}, {1,2,3}, {4,5,6}};

// This is fine
int (*p)[3] = a1;

// compilation error - incompatible types int[3] from type int (*)[3]
*(p + 2) = a2

我理解这个问题,但无法解决这个问题。

您不能在C中分配数组,这就是语句*p+2试图做的:它对p进行一次解引用,结果是p指向的是一个包含三个整数的数组,您不能为该数组分配任何内容。

对不起,问题错了。无法合并这些阵列。连续内存中没有内存。我将结束这个问题。@ZEN.Kamath可以合并哪些阵列?@cmaster是的,我无法编辑我的评论,因此将其删除