Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/06/2012, 07:14
starfix
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 11 meses
Puntos: 25
Respuesta: relacion struct operador new asignar

lo que hace el operador new, es decirle al sistema operativo que reserve memoria de X tamaño para ser usada por tu programa, el SO va a evaluar si esta disponible esa cantidad de memoria y si es asi, la va a reservar para el programa y le va a decir a este la posicion de memoria que se reservo para el.... es mas o menos asi, nunca me lei la teoria :)

ahora, si haces esto:

Código C++:
Ver original
  1. struct agenda
  2.  {
  3.  char nombre[25];
  4.  char apellido[25];
  5.  int edad;
  6.  int dni;
  7.  };
  8.  
  9. ...
  10. //dentro de alguna funcion o de main
  11.  
  12. agenda *nueva_agenda; //declaramos un puntero a agenda
  13. nueva_agenda= new agenda(); //le asignamos al puntero una direccion de memoria
  14. ...
  15.  
  16. //tambien se puede hacer en una sola linea
  17. agenda *nueva_agenda= new agenda();

en el codigo anterior, el programa, le solicita al SO que le reserve memoria del tamaño del struct, si se pudo hacer, el SO operativo le devolvera esta direccion de memoria al programa, y este ultimo se la asignara al puntero nueva_agenda. Con este puntero vas a poder manipular la direccion de memoria que se te asigno y cuando ya no la necesites mas haces free nueva_agenda;, para liberar la memoria y asi el sistema operativo la pueda usar nuevamente.

entonces, podriamos hacer lo siguiente:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. struct agenda
  6.     {
  7.         char nombre[25];
  8.         char apellido[25];
  9.         int edad;
  10.         int dni;
  11.     };
  12.  
  13. int main(int argc, char *argv[]) {
  14.  
  15.    
  16.     agenda *nueva_agenda= new agenda();
  17.    
  18.     nueva_agenda->edad= 10;
  19.     nueva_agenda->dni= 43000758;
  20.    
  21.     strcpy(nueva_agenda->nombre, "eutanacio");
  22.     strcpy(nueva_agenda->apellido, "dritz");
  23.    
  24.    
  25.     cout<< "el nombre es: "<< nueva_agenda->nombre;
  26.     cout<<endl<< "el apellido es: "<< nueva_agenda->apellido;
  27.     cout<<endl<< "la edad es: "<<nueva_agenda->edad;
  28.     cout<<endl<< "el dni es: "<<nueva_agenda->dni;
  29.    
  30.               free nueva_agenda; //liberamos la memoria utilizada por el puntero
  31.  
  32.     return 0;
  33. }


tambien se utilizan para el ejemplo que te dio cesar y muchos mas, todo depende de la necesidad del programa

saludos