[C con Clase] Saludos
jferia en uci.cu
jferia en uci.cu
Mie Ene 13 21:30:41 CET 2010
En mi opinión en C++ la mejor forma de pasar parámetros es hacerlo mediante
las referencias, una de las ventajas que tiene es que no permite que se pase
un parámetro con el valor null, otra es que dentro de la función se hace uso
de las variables de forma natural, sin necesidad del operador flecha, esto
permite olvidarse de si se están tratando una variable o una referencia.
Además a la hora de llamar la función no se necesita un tratamiento especial
como es el caso del operador & cuando se usan punteros.
Siempre y cuando no se necesite modificar el parámetro los más adecuado es
pasarlo como referencia constante, previniendo que en la función se
modifique el objeto asociado a la referencia.
Vicent <vginer en gmail.com> ha escrito:
> 2010/1/12 Leonardo Boquillon <lboquillon en gmail.com>
>
>> en mi humilde opinión creo que ya python esta lo suficientemente
>> documentado, mm no se es raro ver esto es como ir a un foro del real madrid
>> pidiendo que se haga algo del barcelona [?]
>>
>>
>
> Creí que "Conclase" era un foro sobre fútbol, no sobre el Real Madrid. Pero
> es cierto que estoy en el "subforo" sobre C y C++.
>
>
> En cualquier caso, lanzo una pregunta de novato sobre C++.
>
> Leyendo, he visto dos modos de pasar argumentos por referencia:
>
> (1) void funcion1 ( int ¶metro ) {
> ... } ;
>
> (2) void funcion1 ( int *parametro ) {
> ... } ;
>
> En el caso (1), "parametro" es un entero pasado por referencia. En el
> cuerpo de la función, debería referirme a él como "parametro", y todos los
> cambios que experimente esa variable se verán reflejados en la variable
> correspondiente donde esté la llamada a "funcion1". Por ejemplo, podría
> llamar a esta función así: funcion(k) ; donde "k" es una variable tipo int,
> o bien funcion(*pk), donde "pk" sería un puntero a una variable tipo
> "int".
>
> En el caso (2), "parametro" es un puntero a un entero (el puntero es pasado
> por valor, no por referencia; pero es una manera de pasar un entero por
> referencia). En el cuerpo de la función, debería referirme a ese entero como
> "*parametro", y todos los cambios que experimente el valor al que apunta el
> puntero "parametro" se verán reflejados en la variable correspondiente donde
> esté la llamada a "funcion1". Por ejemplo, podría llamar a esta función
> así: funcion(&k) ; donde "k" es una variable tipo int, o bien funcion(pk),
> donde "pk" sería un puntero a una variable tipo "int".
>
> También me ha parecido leer que la sintaxis (1) es incorrecta en C, pero
> correcta en C++.
>
> ¿Cuál de las dos formas es la más usual para pasar parámetros por referencia
> a una función? O bien, ¿en qué casos es recomendable/preferida cada una?
> ¿Son equivalentes, o hay alguna diferencia que se me escapa?
>
> Gracias de antemano por vuestras respuestas.
>
> Un saludo.
>
> --
> Vicent
>
Más información sobre la lista de distribución Cconclase