Pasar puntero int a una funcion

Es sobre mi programa con criaturas. Todo funciona bien, solo que ademas de los arrays con la intentar POR e Y de estas, tengo que pasar a grabar_datos y leer_datos un entero y me da error al pasarlo como un puntero (no puede convertir int a *int). ¿Lo he solucionado declarando esa variable que guarda el entero como una array de tamaño 1 y pasándolo como los demás. Hay alguna otra forma? ¿Cómo lo paso a la función: leer_datos("nombre.ext", elementos, criatura,?)
?
¿Qué pongo en la declaración de la función para que lo reciba? : void leer_datos(char *nombre, int elementos, tipo_criatura *criaturas,?)
Como lo proceso dentro de la funcion?: in.read( (char *)?????,sizeof(int) );
. Elementos también es int, pero como no tengo que grabar ni cargar su valor en el fichero no hay problema, es solo con el que quiero grabar/cargar.En resumen, como se pasa por referencia a una función algo que no es un array para grabar su valor en el fichero.

1 respuesta

Respuesta
1
Una pequeña explicación sobre punteros.
Como seguramente ya sabrás un puntero no es ni más ni menos que una dirección de memoria, solo eso.
Si tienes un punteros a entero así:
int * pInt;
y una variable entera:
int nInt=6; //nInt vale 6
yo puedo hacer q pInt apunte a la direccion de memoria donde esta contenida nInt asi:
pInt=&nInt; (con & se accede a la posicion de memoria)
Para acceder al contenido de la variable a la cual apunta ahora el puntero pInt seria así:
*pInt=8; //ahora nInt vale 8
por lo tanto si tenemos una funcion void Leer(.) Que recibe un puntero a entero, es decir, la dirección de una variable entera:
void Leer(int *);
y si tenemos un entero:
int x;
la llamariamos asi:
Leer(&x);
Otra cosa, como t aconseje el otro día, puedes usar los operadores sobrecargados de los objetos stream (ifstream y ofstream), de forma que leer un entero seria algo así:
void Leer(char * fic,int *p)
{
ifstream input(fic,ios::in, 0 );
input >> *p;//se guarda el entero sobre el contenido al q apunta p
input.close();
}
Bueno, y eso es todo,
Si tienes alguna dudas más, por aquí andaré.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas