C/Visual C - Declarar un array como variable global sin inicial

   
Vista:

Declarar un array como variable global sin inicial

Publicado por Robert (1 intervención) el 26/12/2009 23:42:19
Hola amigos!

Bueno, antes de nada, mil gracias por las mil dudas que aquí he resuelto anónimamente, pero ahora ha llegado mi momento de preguntar.

Veréis, tengo un archivo en c, que cuenta con un array como variable global que almacena los estudiantes de una clase. La primera función de este fichero, es inicializarClase(int numero_estudiantes), o sea, pasando como dato el número de estudiantes de la clase.

Así pues, yo había pensado en crear un array de la estructura Estudiante (que tiene una longitud fija de 128 bytes), de forma que pueda acceder y guardar cada Estudiante en una posición del array. El problema reside en que este array ha de ser, a la fuerza, global, y supongo que en C no se puede declarar un array como global e inicializarlo posteriormente en una función. ¿O hay alguna forma?

En caso de que no la haya, la única posibilidad sería crearlo con punteros, pero luego debo recorrer la lista de Estudiantes, almacenarla en fichero y luego poder leer el fichero con una función leerEstudiante(numInicial, (char *) lista_estudiantes, numEstudiantes), es decir, que tengo que decir a partir de qué estudiante quiero empezar a leer, cuántos estudiantes leer, y devolverlo en el buffer lista_estudiantes.

A ver si alguien me puede dar una pistilla de por donde tirar...

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Declarar un array como variable global sin inic

Publicado por Tom (481 intervenciones) el 28/12/2009 11:57:35
¿ Por qué supones que "en C no se puede declarar un array como global e inicializarlo posteriormente en una función" ?

Yo repasaría algún tutorial de c ...

En el fichero global.h

struct Estudiante {
...
...
};

struct Estudiante *estudiantes = NULL;

en el fichero codigo.c

#include "global.h"

main() {
...
...
if(estudiantes == NULL) {
estudiantes = calloc(numEstudiantes, sizeof(struct Estudiante));
}
...
...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar