Use two for loops to send the multidimensional array, and two for loops to receive the multidimensional array.
ReceivingSending:
int a[3][4] = {
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
for (int x = 0; x < 3; x++)
{
for (int y = 0; y < 4; y++)
{
Serial.print(a[x][y]);
}
}
Receiving
for (int x = 0; x < 3; x++)
{
for (int y = 0; y < 4; y++)
{
a[x][y] = Serial.read(); // Not sure about the exact prototype
}
}
If the sizes are fixed (like in your case 3 and 4), than you don't have to send the dimensions, just sent the values in order: 0, 1, 2, 3, 4, ... like above.
And when receiving them you know the first four values belong to row 0, next four values to row 1 etc.
If you need dynamic sizes, first send the number of rows and columns and than the values.
In that case instead of 3 and 4 define two constants and use them:
#define NR_ROWS 3
#define NR_COLUMNS 4
int a[NR_ROWS][NR_COLUMNS] = {
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
for (int x = 0; x < NR_ROWS; x++)
{
for (int y = 0; y < NR_COLUMNS; y++)
{
Serial.print(a[x][y]);
}
}