Programación básica (array)

Una pregunta muy simple por favor:

tengo un array de dos dimensiones, y quiero asignar a una de sus líneas un grupo de valores dado (constante).

Hice inicialmente esto, y no me funcionó:

typedef byte linea[17];

linea tabla[10];


void setup() 
{ 
 tabla[0]={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};
}

al compilar me sale:

pruebaArray:10: error: assigning to an array from an initializer list

  tabla[0]={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};

          ^

exit status 1
assigning to an array from an initializer list

Luego hice una segunda prueba y tampoco me funcionó:

typedef byte linea[17];

linea tabla[10];


void setup() 
{ 
 linea inicial={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};
 tabla[0]=inicial;
}

al compilar me sale:

pruebaArray:11: error: invalid array assignment

  tabla[0]=inicial;

          ^

exit status 1
invalid array assignment

¿Cómo puedo hacer para asignar valores?

Ya sé que podría hacerlo con 17 líneas de código, haciendo

tabla[0][0]=6;
tabla[0][1]=2;
tabla[0][2]=3;
etcétera............................

o también con un for

for (int a=0;a<17;a++)
 tabla[0][a]=inicial[a];

Sin embargo, busco la forma de hacer algo simple, que en muchos lenguajes se lo resuelve con sólo el operador de asignación =
En lenguaje C que usamos para arduino, ¿se puede hacer una asignación como la que busco?

Hola.

No se puede dedinir un array en la forma que lo haces:

tabla[0]={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};

// ... y el compilador se queja
pruebaArray:10: error: assigning to an array from an initializer list

  tabla[0]={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};

          ^

Le estas diciendo al compilador que quieres un array de cero elementos, y al mismo tiempo pretendes asignarle una lista con 17 elementos.
Si quieres definir un array de 17 elementos solo hay que hacer esto:

byte tabla[17]={6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17};

Lo de las dos dimensiones no lo he entendido, pero por ilustrar un ejemplo seria:

byte tabla[2][17]=
{
       {6,2,3,4,88,6,7,34,9,10,21,0,13,14,9,16,17},
       {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}
};

Y una asignacion parcial:

tabla[1][7]=23;
tabla[0][12]=111;
tabla[1][0]=127;
// ... etc

Si no te entendí bien, comentalo.

En caso de no poderse así, entonces sería más sencillo:

typedef byte linea;

linea tabla[10][17]; // Se lee: 10 arrays de 17 cada uno

No veo que aporta esto:

// ... ???? ...
typedef byte linea;
linea tabla[10][17]; // Se lee: 10 arrays de 17 cada uno

// ... esto es mas directo y menos confuso ...
byte tabla[10][17]; // Un array bidimensional de 10 * 17 elementos (tambien llamado matriz)

// ... variantes ...
byte tabla[7][15][6]; // Un array tridimensional de 7 * 15 * 6 elementos

Me parece que ha confundido mi forma de definir. Usé tipedef inicialmente para definir el tipo de datos linea, que es un array de 17 elementos. Entonces la variable tabla es un array de 10 elementos, y cada elemento es del tipo de datos linea. Luego necesitaré tener variables individuales del tipo linea (array de 17 elementos) y asignar algunas de esas variables a diferentes posiciones de la variable tabla.

Pero hago un ejemplo similar, sin esa construcción de typedef separada:

byte tabla[10][17];
// definición de la variable global, sin asignarle varlores iniciales.


void setup() 
{ 
 //1ro: quiero asignar un grupo de valores constante a la posición 6.
 //¿cómo lo hago?
 //A las otras posiciones todavía no quiero asignarles valores
 tabla[6]={99,88,77,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
 
 
 //2do: creo una variable local con una asignación de valores específica
 byte lineaInicial[17]={66,55,44,4,5,6,7,8,9,10,11,12,13,14,15,16,17};

 
 //3ro: ahora quiero asignar mi variable local lineaInicial a la posición 7 de la variable tabla 
 //¿cómo lo hago? 
 tabla[7]=lineaInicial;
}

void loop(){}

Las partes 1ra y 3ra no compilan bien, sólo la 2da compila sin errores

En la 1ra parte: No sé como asignar un grupo de valores constante a la fila 6 de mi tabla sin acudir a 17 líneas de código.

La 2da parte funciona bien: creo una array de 17 con valores iniciales.

La tercera parte tampoco me funciona: esa variable con valores iniciales, quiero asignarla a la fila 7 de mi tabla. ¿Quizá sólo puedo hacerlo con un for, y no con una simple asignación?

Los errores de compilación del ejemplo que di son los siguientes:

pruebaArray:10: error: assigning to an array from an initializer list

  tabla[6]={99,88,77,4,5,6,7,8,9,10,11,12,13,14,15,16,17};

          ^

pruebaArray:18: error: invalid array assignment

  tabla[7]=lineaInicial;

          ^