SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: pacorubio77 en Lunes 2 de Marzo de 2009, 15:27
-
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.
-
No existen las referencias en C, usa doble puntero (**).
-
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.
-
En tu caso con un simple puntero alcanza ya que no queres cambiar la direccion de la variable que pasas sino unicamente su valor:
#include <stdio.h>
void Funcio(int *x)
{
*x = 77;
}
void main()
{
int p = 99;
Funcio(&p);
printf("%drn", p);
}
Burdamente doble puntero:
#include <stdio.h>
void Funcio( char **x)
{
if (**x == 'A')
{
*x = "hola";
}
else
{
*x = "chau";
}
}
void main()
{
char *p = "ABCD";
Funcio(&p);
printf("%srn", p);
p = "EFGH";
Funcio(&p);
printf("%srn", p);
}
-
entonces si yo tengo:
un vector y un indice ,quedaría de esta manera:????
# void Funcio(int v[],int *x)
# {
int c;
# *x ++;
v
# }
#
# void main()
# {
# int p = 99;
int v[100];
# Funcio(v,&p);
# printf("%drn", p);
# }
sería asi?
-
Casi:
(*x)++;
v[*x]=c;
Igual la dimension 100 es invalida en un array de 100 elementos, estos van de 0 a 99.