• Miércoles 6 de Noviembre de 2024, 07:25

Autor Tema:  tengo error , pasar parametro por referencia en C  (Leído 1365 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
tengo error , pasar parametro por referencia en C
« en: Lunes 2 de Marzo de 2009, 15:27 »
0
Hola,estoy programando en C y quiero hacer que en una funcion un parámetro sea pasado por referencia,pero en el compilador hay errores que no entiendo....pongo como creo que es :

void Funcio( int &x){


}
si lo que quiero es utilizar el valor de x fuera de la funcion ,asi lo he echo de toda la vida en C++,y por lo que he leido en C tambien lo es,pero a mi me da error en el compilador....

Es que tengo el concepto mal....?

Espero respuesta.
Gracias.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: tengo error , pasar parametro por referencia en C
« Respuesta #1 en: Lunes 2 de Marzo de 2009, 15:50 »
0
No existen las referencias en C, usa doble puntero (**).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: tengo error , pasar parametro por referencia en C
« Respuesta #2 en: Lunes 2 de Marzo de 2009, 16:02 »
0
un doble puntero? me puedes poner un ejemplo de como usarlo en el prototipo de la funcion y en la llamada de la funcion?

yo por ejemplo lo utilizo como indice de un vector...quiero que fuera de la funcion pueda tener ese indice ...

Espero respuesta.
Gracias.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: tengo error , pasar parametro por referencia en C
« Respuesta #3 en: Lunes 2 de Marzo de 2009, 16:39 »
0
En tu caso con un simple puntero alcanza ya que no queres cambiar la direccion de la variable que pasas sino unicamente su valor:

Código: Text
  1. #include <stdio.h>
  2.  
  3. void Funcio(int *x)
  4. {
  5.   *x = 77;
  6. }
  7.  
  8. void main()
  9. {
  10.   int p = 99;
  11.   Funcio(&p);
  12.   printf("%drn", p);  
  13. }
  14.  

Burdamente doble puntero:

Código: Text
  1. #include <stdio.h>
  2.  
  3. void Funcio( char **x)
  4. {
  5.   if (**x == 'A')
  6.   {
  7.       *x = "hola";
  8.   }
  9.   else
  10.   {
  11.       *x = "chau";
  12.   }  
  13. }
  14.  
  15. void main()
  16. {
  17.   char *p = "ABCD";
  18.   Funcio(&p);
  19.   printf("%srn", p);
  20.   p = "EFGH";
  21.   Funcio(&p);
  22.   printf("%srn", p);
  23. }
  24.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: tengo error , pasar parametro por referencia en C
« Respuesta #4 en: Lunes 2 de Marzo de 2009, 16:57 »
0
entonces si yo tengo:

un vector y un indice ,quedaría de esta manera:????
Citar
# void Funcio(int v[],int *x)
# {
   int c;
#   *x ++;
     v
  • =c;

# }
#  
# void main()
# {
#   int p = 99;
     int v[100];
#   Funcio(v,&p);
#   printf("%drn", p);  
# }

sería asi?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: tengo error , pasar parametro por referencia en C
« Respuesta #5 en: Lunes 2 de Marzo de 2009, 18:03 »
0
Casi:
(*x)++;
v[*x]=c;

Igual la dimension 100 es invalida en un array de 100 elementos, estos van de 0 a 99.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.