En primer lugar, me sorprendería si esto no fuera un duplicado. Sin embargo, no he logrado encontrar una pregunta que describa lo que estoy tratando de hacer.
Asi que aqui esta. Estoy tratando de crear una matriz de estructuras con un TAMAÑO de longitud definida:
#define SIZE 100
struct Link {
int number;
int id;
};
struct Link links[SIZE];
Luego estoy intentando ejecutarlo y asignar valores a los miembros de cada estructura:
int i;
for(i = 0; i < SIZE; i++) {
struct Link link = links[i];
link.number = i;
link.id = i + 100;
}
Pero los valores no están asignados, son siempre 0.
Esto parece funcionar, sin embargo:
int i;
for(i = 0; i < SIZE; i++) {
#define link links[i]
link.number = i;
link.id = i + 100;
}
pero #define link links[i]
me sigue dando un error que i
no se puede resolver.
¿Estoy ignorando una solución obvia a esto? Estoy agradecido por cualquier ayuda, chicos!
Esto es parte de una tarea escolar, y creo que no se nos permite cambiar links
Para ser una matriz de punteros.
EDITAR
He encontrado que haciendo links[i].something = something_else
funciona, pero el struct Link
Realmente tengo muchos miembros, haciendo que la solución sea un poco desordenada. Pero si es la única alternativa, la seguiré.
Respuestas
3 para la respuesta № 1int i;
for(i = 0; i < SIZE; i++) {
links[i].number = i;
links[i].id = i + 100;
}
0 para la respuesta № 2
Si tiene muchos elementos de estructura para asignar y quiere escribir un poco menos (no que cambie mucho, para eso es para qué copiar y pegar), también podría usar:
int i;
struct link *link;
for(i = 0; i < SIZE; i++) {
link=links+i; // which is equivalent to link=&links[i];
link->number = i; // equivalent to (*link).number = i;
link->id = i + 100;
}