SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: AnioN en Sábado 30 de Septiembre de 2006, 14:55

Título: Parametros Por Referencia
Publicado por: AnioN en Sábado 30 de Septiembre de 2006, 14:55
Hola, cuando paso algun parametro por referencia solo se puede pasar una variable?, no es posible pasar por referencia un array o vector no?
Título: Re: Parametros Por Referencia
Publicado por: Bicholey en Sábado 30 de Septiembre de 2006, 15:56
:D  :D  :D

De hecho puedes pasar toda una estructura completa con vectores arrays y variables en su interior ...
Título: Re: Parametros Por Referencia
Publicado por: AnioN en Sábado 30 de Septiembre de 2006, 16:13
claro, es una solucion posible, pero me referia a si es posible usando tipos primitivos.
Título: Re: Parametros Por Referencia
Publicado por: Eternal Idol en Sábado 30 de Septiembre de 2006, 16:45
Cuando pasas algo por referencia usas su direccion de memoria ... dan lo mismo el tamaño y el tipo ya que lo que pasas es su comienzo.

http://www.conclase.net/c/curso/index.php?cap=015 (http://www.conclase.net/c/curso/index.php?cap=015)
Título: Re: Parametros Por Referencia
Publicado por: AnioN en Sábado 30 de Septiembre de 2006, 17:28
A lo que me referia es que si paso un vector por referencia estoy pasando la direccion del primer elemento del mismo, o sea, solo la variable con que recibo el vector seria un alias del pirmer elemento del mismo, no?
Título: Re: Parametros Por Referencia
Publicado por: Eternal Idol en Sábado 30 de Septiembre de 2006, 17:50
¿Con vector te referis a un array? Tal vez si explicas mejor lo que queres hacer sea mas simple ... parece un caso que yo resolveria usando un puntero ...
Título: Re: Parametros Por Referencia
Publicado por: Enko en Sábado 30 de Septiembre de 2006, 18:10
creo que lo que buscas es la correspondencia entre un array y un puntero...
http://www.conclase.net/c/curso/index.php?cap=012b (http://www.conclase.net/c/curso/index.php?cap=012b)
Código: Text
  1.  
  2. int vector[10];
  3. int *puntero;
  4.  
  5. puntero = vector; /* Equivale a puntero = &vector[0];
  6.   esto se lee como "dirección del primer de vector" */
  7. *puntero++; /* Equivale a vector[0]++; */
  8. puntero++; /* puntero equivale a &vector[1] */
  9.  
  10.  
Título: Re: Parametros Por Referencia
Publicado por: AnioN en Sábado 30 de Septiembre de 2006, 21:32
A lo que me referia es por ej si puedo pasar un string por referencia sin meterlo dentro de una estructura. En este caso seria como puedo pasar el array s a la funcion fecha por referencia?
Código: Text
  1. #include<iostream>
  2.  
  3. void fecha(char *s);
  4.  
  5. void main() {
  6.   char s[15];
  7.  
  8.   cout << "Ingrese la fecha:";
  9.   cin.getline(s, 15,'\n');
  10.  
  11.   fecha(s);
  12.  
  13.  
  14.   cout << endl << "Presione una tecla para salir";
  15.   cin.ignore();
  16.   cin.get();
  17. }
  18.  
  19.  
  20. void fecha(char *s) {
  21.   cout << endl << "La fecha es:" << s;
  22. }
  23.  
Título: Re: Parametros Por Referencia
Publicado por: Eternal Idol en Sábado 30 de Septiembre de 2006, 21:57
La verdad es que no entiendo que queres hacer realmente ... no le veo sentido a lo que intentas ... mas bien parece que queres usar una carcateristica de C++ para probar ... una referencia es un doble puntero ... asi de simple.
Título: Re: Parametros Por Referencia
Publicado por: Geo en Domingo 1 de Octubre de 2006, 00:09
Cita de: "AnioN"
A lo que me referia es por ej si puedo pasar un string por referencia sin meterlo dentro de una estructura.
Te referirás a pasarlo por valor ¿no?, las cadenas "al estilo C" se pasan siempre por referencia. El meterlas dentro de una estructura es el único "truco" que permite pasarlas por valor. Ahora, los arrays son lo mismo que las cadenas "al estilo C", recuerda que una cadena de este tipo es simplemente un array de caracteres, por lo tanto, aplica lo mismo para arrays (siempre se pasan por referencia).

Saludos,
JJ (Geo).
Título: Re: Parametros Por Referencia
Publicado por: Bicholey en Domingo 1 de Octubre de 2006, 09:04
:D  :D

Yo no veo problema alguno en pasarlo por medio de una estructura...
Título: Re: Parametros Por Referencia
Publicado por: ratzielx en Miércoles 4 de Octubre de 2006, 16:35
BUENO no es necessario porq q un aray ya esta pasado por referencia osea q no tines q poner el operador & ademas es un puntero al primer elemento bueno eso en resumen
Título: Re: Parametros Por Referencia
Publicado por: geobeid en Viernes 6 de Octubre de 2006, 06:44
Citar
Hola, cuando paso algun parametro por referencia solo se puede pasar una variable?, no es posible pasar por referencia un array o vector no?

NO QUIERO QUEDAR COMO UN FANFARRON AL ENTRAR EN TECNISISMOS PERO VOY A HACER CORRECCIONES PARA QUE SE ENTIENDA MEJO.

CUANDO UNA PASA ALGO POR REFERENCIA EN REALIDAD PASA UN PUNTERO A LA DIRECCION DE MEMORIA DE LO QUE "PASA".

PODES PASAR CUALQUIER COSA POR REFERENCIA PERO TENE EN CUENTA QUE NO SE COPIAN LOS DATOS SIN QUE SON LOS MISMOS DATOS LOS QUE MANEJAS.

CUANDO UNO PASA UN ARREGLO SIEMPRE ESTA HACIENDO UN PASAJE POR REFERENCIA YA QUE EL NOMBRE DEL ARREGLO NO ES MAS QUE EL PUNTERO AL PRIMER ELEMENTO DE EL ARREGLO.

SI PASAS UN VECTOR DE STL SE COPIA PERO EL CONSTRUCTOR POR COPIA SOLO COPIA EL HEADER DEL VECTOR Y A LA LARGA ES LO MISMO PASARLO POR REFERENCIA O POR COPIA.

PODES PASAR LO QUE SE TE CANTE POR REFERENCIA, INCLUSO OBJETOS DE TU PROPIA INVENCION.

ESPERO QUE SIRVA.
BYTES  :kicking: