[C con Clase] Saludos

Vicent vginer en gmail.com
Mar Ene 12 17:46:57 CET 2010


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 &parametro )  {
              ... } ;

(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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100112/dd489280/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 326.gif
Type: image/gif
Size: 285 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100112/dd489280/attachment.gif>


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