No se puede asignar una matriz a otra

Probé a través de diferentes maneras de copiar un puntero de matriz a otro, sin ningún éxito. Aquí están mis bashs, con el mensaje de error asociado.

typedef long int coordinate; typedef coordinate coordinates[3]; void test(coordinates coord) { coordinates coord2 = coord; // error: invalid initializer coordinates coord3; coord3 = coord; // error: incompatible types when assigning to type 'coordinates' from type 'long int *' coord3 = (coordinates) coord; // error: cast specifies array type coord3 = (coordinate[]) coord; // error: cast specifies array type coord3 = (long int*) coord; // error: incompatible types when assigning to type 'coordinates' from type 'long int *' } 

Sé que podría usar typedef coordinate* coordinates; en cambio, pero no me parece muy explícito.

No puede asignar matrices en C. Use memcpy para copiar una matriz en otra.

 coordinates coord2; memcpy(coord2, coord, sizeof coord2); 

Cuando las matrices se pasan por valor, decaen a los punteros . El truco común para evitar eso es envolver su matriz de tamaño fijo en una struct , como esta:

 struct X { int val[5]; }; struct X a = {{1,2,3,4,5}}; struct X b; b = a; for(i=0;i!=5;i++) printf("%d\n",b.val[i]); 

Ahora puede pasar sus arreglos envueltos por valor a las funciones, asignarlos, etc.

Tus coordenadas deben ser inicializadas como punteros

coordinates *coords2, *coords3;

Pruébalo y luego asignalo.