C/C++ Dudas parámetros

Iniciado por h0oke, 23 Mayo 2010, 16:00 PM

0 Miembros y 1 Visitante están viendo este tema.

h0oke

He visto que en C los pasos por referencia se hacen de la siguiente manera:

int funcion(int *a, int *b);

En C++, he visto que se puede utilizar directamente:

Código (cpp) [Seleccionar]
int funcion(int &a, int &b);

En C++ es optativo utilizar cualquiera de las dos? Es decir, queda a disposición de la comodidad del programador?

.:BlackCoder:.

Creo que no son la misma cosa.. para mi no lo son... Yo se un poco de C++ y pes prefiero usar las referencias... Por que? Bueno para empezar por comodad porq es mejor hacer...

Código (cpp) [Seleccionar]
int funcion(int &a, int &b){
return a+b;}


que...
Código (cpp) [Seleccionar]
int funcion(int *a, int *b){
return *a+*b;}

:xD
Ademas... eso depende de que quieras hacer con la funcion... recuerda que lo punteros solo deben utilizarse (segun yo  :xD) para memoria dinamica, si no no tendria sentido... para eso estan los arrays y las referencias...

Espero estar en lo correcto, y haberte ayudado...

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




h0oke

Exacto, yo también lo veo desde el punto de vista: "Comodidad"... En cuanto a la utilización de punteros en memoria dinámica también lo veo correcto. Pero bien, no sé cuál opción de las primeras es la preferible, tal vez haya algún ingeniero en software que quiera dar su opinión.

^Winder^

Lo primero son un paso de punteros y lo segundo son un paso de referencias a valores (paso por referencia), no es lo mismo, de hecho se pueden combinar las dos, puedes pasar punteros por referencia, así si por ejemplo creas un puntero a algún objeto y lo pasas por referencia puedes cambiar dentro de la función el objeto al que apunta, si pasaras solo el puntero no podrías :)

No sé si se me entiende.

Yo apoyo la esperanza de Caylees. Frenemos la Leucemia:
www.cayleeshope.com
Libertad conquistada.  (Justicia ;-))

h0oke

No he podido entender.

En C teóricamente el paso por referencia se hace con punteros, según había entendido, por ejemplo:

void swap(int *a, int *b)
{
     int aux;
     aux = *a;
     *a = *b;
     *b = aux;
}


En C++, creo que sería de la siguiente forma:

Código (cpp) [Seleccionar]
void swap(int &a, int &b)
/* Tambien creo que se pueden emular la función con punteros */
/* Esa es mi duda, ¿cuál es la opción correcta? */
{
     int aux;
     aux = a;
     a = b;
     b = aux;
}


Aunque también, sabía que se podían pasar punteros por referencia sin ningún problema.

.:BlackCoder:.

Cita de: ^Winder^ en 23 Mayo 2010, 17:43 PM
por ejemplo creas un puntero a algún objeto y lo pasas por referencia puedes cambiar dentro de la función el objeto al que apunta, si pasaras solo el puntero no podrías :)

Como que no?... yo puedo modificar con un puntero los objetos apuntados... Asi sea en una funcion... La unica forma de evitarlo es pasandolo constante (con la palabra reservada const) de resto si se puede... Si estoy errado alguien que me lo aclare...

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




h0oke

Creo que no estás errado, por eso puse el ejemplo citado.

.:BlackCoder:.

A mi no me prestes atencion porque no soy ingeniero en software... :(

:laugh: ;-)
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




h0oke

Cita de: El_nuevo_HH en 23 Mayo 2010, 18:43 PM
A mi no me prestes atencion porque no soy ingeniero en software... :(

:laugh: ;-)
:xD y tu crees que a mi me importa? El foro está hecho para compartir opiniones, sean erradas o no... de todas maneras siempre se termina aprendiendo...

.:BlackCoder:.

No se si te importara pero me parecio comico el comentario:
Cita de: dr.~ en 23 Mayo 2010, 17:12 PM
Pero bien, no sé cuál opción de las primeras es la preferible, tal vez haya algún ingeniero en software que quiera dar su opinión.
Debe ser por el fastidio que tengo... Ando haciendole unas diapositivas a una amiga...  :¬¬
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja