2011-10-24 8 views

Respuesta

14

No puede asignar matrices en C. Se pueden copiar con la función memcpy(), declarados en <string.h>:

int a[3]; 
int b[] = {1,2,3}; 

memcpy(&a, &b, sizeof a); 
+1

Muy bien, eso es todo lo que busqué. – Starfighter911

+1

@Jonathan Leffler: El '& array' es una elección deliberada: al copiar un solo objeto (aquí, una única matriz), creo que debería preferirse la forma' memcpy (& dest, & src, sizeof src) '(o con' sizeof dest' - deberían ser lo mismo). Esto es por consistencia: la misma línea 'memcpy()' funcionaría si el tipo de 'a' y' b' fueran de tipo no matriz. Puede que no estés de acuerdo, pero con un poco de suerte puedes ver que hay ciertamente "juicio" detrás de la elección. – caf

+0

no es '& a' un puntero a un puntero a la matriz? – weberc2

14

De esa manera no funciona, ya que ha encontrado . No puede asignar matrices en C.

Las estructuras, sin embargo, son asignables. Así que usted puede hacer esto:

typedef struct 
{ 
    int x[3]; 
} T; 

T a; 
T b = { { 1, 2, 3 } }; 

a = b; 
+0

Gracias esto era recta, ¿hay alguna función haciendo este trabajo, así que no tengo que volver a escribir mucho código. – Starfighter911

+1

¿Cómo es 'a = b' un" lote de código "? –

+0

Bien, probé esto: 'T a []; T b [] = {{1, 2, 3}}; a = b; ', todavía no está funcionando. Salida: "La expresión no es lvalue". – Starfighter911

Cuestiones relacionadas