#include <iostream>
//#include <exception>
#include <new> // std::bad_alloc
#include <windows.h>
using namespace std;
struct Alumnos {
char nombre[15];
char apellido[15], estado;
int dni;
float notas[3], promedio;
};
//agenda para el profesor
struct Agenda {
char nombre[15];
char apellido [15];
char materia[50];
//alumnos registro[]; <-Esto esta mal. Debes indicar siempre un tamaƱo si no lo haces de forma dinamica.
};
int main () {
Agenda *pAgenda = NULL; //Eso declara el puntero
int N = 2; // N lo pides aqui. Yo lo puse 2 solo para probar
try { //control de errores
pAgenda = new Agenda[N];
} catch ( std::bad_alloc& ba ) { //si hay un error obtenemos el error
cout << "Imposible asignar espacio. Error: " << ba.what() << endl; //avisamos el error
exit ( -1 ); // salimos con error
}
//si pasamos de aqui ya tenemos la memoria asignada
//probamos guardar cosas
strcpy(pAgenda[0].nombre, "Charlie");
strcpy(pAgenda[1].nombre, "Pepe");
//y probamos imprimir
cout << pAgenda[0].nombre << endl;
cout << pAgenda[1].nombre << endl;
delete[] pAgenda; // muy importante para no haber fugas de memoria
pAgenda = NULL; // Buena practica es establecer el puntero a nulo para que no apunte a la direccion ninguna para no cometer errores. Es opcional
cin.ignore();
return 0;
}