[C con Clase] Pasar por referencia

Programante programante en gmail.com
Mie Ene 20 16:57:35 CET 2010


> Hola Vincent.
> De las opciones que planteas considero lo siguiente:
> La tercera Alternativa:
> mi_funcion(const FILE fichero , [...]) {
>      [...]
> }
> esta no la creo correcta pues el parámetros fichero debe ser un puntero a FILE y no lo estás declarando
>
> la segunda Alternativa:
> *mi_funcion(const FILE &*fichero , [...]) {*
> *    [...]*
> } 
>   
No tiene sentido que pases un puntero como referencia constante. Si
trabajas con punteros, ya estás usando una referencia.

> mi_funcion(const FILE *fichero , [...]) {
>     [...]
> }
>   
Sería la forma correcta, pero casi todas las funciones que actúan sobre
FILE* lo modifican, así que no creop que sea muy útil. Tal vez te sirva
si solo pretendes llamar a feof() o ferror().
En tu caso no creo que te interese pasarlo como constante. Ten en cuenta
que pasarlo como constante es cuando no modifiques el valor del
parámetro *ni tampoco las funcioens a las que lo llames*.
Si lo que quieres es decir que no modificas el puntero pero sí el FILE
creo que podrías hacerlo con FILE * const fichero

Camilo José escribió:
> Otra cosa hay veces que en funciones te piden que debes entrar un parámetro que sea una constante pero no necesariamente
> por ejemplo:
> size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
> Al llamar a la función ´ptr´ no tiene porqué ser una constante, en la función anterior solamente es un apuntador a una cadena.
>
> Espero haber aclarado tu duda, Camilo José.:-)
Es que el prototipo no te dice que el puntero que pases tenga que ser
constante, sólo que es constante desde el punto de vista de la función
(es decir, que no te lo va a modificar).







Más información sobre la lista de distribución Cconclase