Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/10/2009, 09:46
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: Urgente C-vector de caracteres por referencia

Lo que haces aqui es un pasaje por puntero, porque la verdad es que char nom[][30] es un puntero.

No creo que se puede pasar un array por referencia direcamente, hay que pasar por una clase/structura:
Código:
struct MyArray
{
   char[10][20] array;
};

void function ( MyArray & myArray ) // eso es un pasaje por referencia
{
  myArray.array[pos_max][j] = myArray[faux][j];
//...
}
Pero pasar un objeto por referencia es mas o menos la misma cosa que por puntero, en el sentido que si modificas la variable en la funcion, los cambios van a quedar por siempre.

Para que no se altere el vector, no hay otra manera que hacer una copia (si no haces una copia, vas a trabajar siempre en la misma zona de memoria). Y cuando se pasa un parametro por valor, hay una copia "escondida" que se hace:
Código:
void function ( MyArray & myArray ) // eso es un pasage por valor
{
/// codigo, lo que sea;
}

main()
{
   MyArray myArray; // declaracion de un objeto de tipo MyArray
   function( myArray ); // aqui, antes de llamar a function, el compilador hace una copia de myArray, y es esta copia que esta utilizada en la funcion, de manera que el objeto initial no sera alterado
}
Eso es con un objeto/estructura, pero no se como se hace directamente con un "C-style array". Este tipo de array no se usa todavia en c++.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web