Necesitas un buen manual de C. Busca en la biblioteca de tu universidad, en amazon o donde sea, pero consigue un buen manual. Es muy importante tener una buena base para entender lo que estás haciendo.
En C++ existen clases y estructuras, en C únicamente estructuras, pero no son como las estructuras en C++, las de C son mucho más simples ya que no entienden ni de herencia ni de funciones miembro.
C++ te permite sobrecargar un amplísimo abanico de funciones, entre ellas "new" y "delete". Esto te permite usarlas para crear e inicializar cualquier tipo de objeto (y si no las sobrecargas tú ya se encarga el compilador de crear una versión a medida para clase). Sin embargo en C todo esa responsabilidad recae en el programador.
Un arreglo vacío no es más que un puntero (del tipo que te de la gana) que no apunta a nada o no tiene información de interés:
Código C:
Ver originalint* ptr = 0;
struct CAlumnosSeleccion* ptr2 = 0;
Para rellenar un arreglo primero hay que hacer que el arreglo apunte a un elemento válido, esto lo puedes conseguir de dos formas: reservando memoria dinámica o usando la pila:
Código C:
Ver original// Asignación por reserva dinámica de memoria
int* ptr
= (int*)malloc( 20 * sizeof(int) );
// Asignación por referencia
struct CAlumnosSeleccion unaEstructura;
struct CAlumnosSeleccion*ptr2 = &unaEstructura;
En el primer caso no hay que olvidar llamar a "free" cuando la memoria reservada ya no sea necesaria. Si no se hace se crean lagunas de memoria. En el segundo caso no hay que hacer, bajo ningún concepto, una llamada a "free". De hacer la llamada lo más seguro es que el programa genere un error.