Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/05/2015, 16:33
Madh
 
Fecha de Ingreso: octubre-2013
Mensajes: 44
Antigüedad: 11 años
Puntos: 5
Respuesta: Arreglos tamaño dinámico C++

En este tipo de casos, cuando se desconoce el tamaño que puede tener un array hasta que el programa no es ejecutado, es necesario utilizar el 2º punto que han comentado: memoria dinámica, además del conocimento del uso de punteros.

Para reservar memoria dinámicamente en C++ se crea un puntero de la variable que quieres utilizar. Este puntero, inicialmente no apunta nada hasta que no le especifiques a donde quieres apuntar. Con el operador new puedes reservar tanta memoria como especifiques.

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. int main() {
  4.  
  5.     struct persona{
  6.       std::string nombre;
  7.       std::string direccion;
  8.       std::string numerotel;
  9.     };
  10.     int size;
  11.  
  12.     persona *agenda = NULL;    // Agenda es un puntero de tipo 'persona' inicialmente a nulo
  13.  
  14.     std::cout << "Introduce tamaño: ";
  15.     std::cin >> size;
  16.  
  17.     agenda = new persona[size];  // Se reserva memoria, agenda ahora es un array de SIZE personas
  18.  
  19.     if (agenda != NULL) {   // OJO: por cada 'new', siempre un 'delete'
  20.         delete[] agenda;  // Liberar memoria reservada
  21.         agenda = NULL;  // Apuntar otra vez a nulo (buena práctica)
  22.     }    
  23. }