LECHIP dijo:Muchahos, yo ando empezando.
Tengo lios usando estructuras en programas modulares, es decir, como hago9 para enviarlas por referencia, de tal forma que puede modificarlas en los subprogramas. Gracias.
En el siguiente programa la funcion verNombre, recibe por parametro persona * lo que quiere decir que es un apuntador a un objeto persona. En main() puede ver que para pasar un objeto por refencia se puede hacer de dos formas.
En la primera creo un bjeto persona (p1), y paso su posicion en memoria usando el operador &.
En la segunda uso un apuntador, y ya que la función toma como parametro un apuntador lo paso sin transformarlo.
PHP:
#include <iostream>
#include <string>
struct persona{
std::string nombre;
int edad;
};
void verNombre(persona *p){
std::cout << p->nombre + "\n";
}
int main(){
// Ver nombre de la persona 1 Pasando por referencia
persona p1;
p1.nombre = "juan";
verNombre(&p1);
// Ver nombre del a persona 2 Pasando por refencia usando apuntador
persona *p2 = new persona();
p2->nombre = "jorge";
verNombre(p2);
delete p2;
return 0;
}
o se puede hacer a la inversa, usando el operador & en la función para referenciar la direccion en memoria de objeto. Así pasamos el primer objeto sin modificacion y el segundo que es un apuntador lo transformamos usando el operador *
PHP:
#include <iostream>
#include <string>
struct persona{
std::string nombre;
int edad;
};
void verNombre(persona &p){
std::cout << p.nombre + "\n";
}
int main(){
// Ver nombre de la persona 1 Pasando por referencia
persona p1;
p1.nombre = "juan";
verNombre(p1);
// Ver nombre del a persona 2 Pasando por refencia usando apuntador
persona *p2 = new persona();
p2->nombre = "jorge";
verNombre(*p2);
delete p2;
return 0;
}