elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C/C++ Dudas parámetros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: C/C++ Dudas parámetros  (Leído 12,653 veces)
^Winder^


Desconectado Desconectado

Mensajes: 2.776


El mundo no es tuyo, es de todos.


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #10 en: 23 Mayo 2010, 19:31 pm »

Os estais liando ;)

Mirad, si pasais un puntero como parámetro eso es un paso por valor del puntero... por tanto, las modificaciones que hagais al objeto dentro de dicha función se reflejarán en el objeto de fuera (por ser el mismo), pero si intentais cambiar el puntero dentro de dicha función solo estareis modificando una copia del puntero.

Encambio, si pasas un puntero por referencia y modificas el puntero dentro de la función, el cambio también se reflejará fuera :)

Buscad sobre 'paso por valor de puntero' y 'paso por referencia del puntero', y lo vereis mas claro ;)

En C como tal no existe el paso por referencia ni los objetos, simplemente, puedes pasar punteros a variables, en C++ sí es posible. De hecho aparte del tipo puntero  * también teneis el tipo referencia & ;)


En línea


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


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: C/C++ Dudas parámetros
« Respuesta #11 en: 23 Mayo 2010, 19:41 pm »

Bueno al fin y al cabo, todo eso es cierto... Pero mi duda era, ¿cuál es la forma correcta de pasar los valores por referencia en C++? Según estuve hablando queda a disposición de uno.


En línea

.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #12 en: 23 Mayo 2010, 19:46 pm »

Ahhh winder hablaba sobre el puntero... xD yo crei que decias que no se podia modificar el objeto...  >:D No capte, sorry...

Y no me acuerdo bien pero creo que es cierto... No se puede modificar el puntero en la funcion... a menos que lo pases como referencia... pero  eso si no recuerdo como... Si ponen ejemplos mejor jejeje...

Saludos...
En línea

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



h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: C/C++ Dudas parámetros
« Respuesta #13 en: 23 Mayo 2010, 19:58 pm »

Todo lo que dijeron es cierto, no estoy en nada desacuerdo... Pero para pasar objetos(en C++) y modificarlos entonces debería pasarlos con &?
En línea

.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #14 en: 23 Mayo 2010, 20:14 pm »

Depende brother... si es una variable normal... pes si... Pero si son punteros, debes detenerte y pensar que cambios realizaras, si modificaras el puntero (le reservaras memoria, por ejemplo), pasalos por referencia, y si modificaras SOLO el objeto apuntado, no es necesario pasarlo por referencia...

Eso se hace creo que asi:
Código
  1. void funcionx(int *&p);

Y en C es algo con punteros dobles, como no se xD pero por ahi deben haber ejemplos...

Saludos...
« Última modificación: 23 Mayo 2010, 21:38 pm por El_nuevo_HH » En línea

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



h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: C/C++ Dudas parámetros
« Respuesta #15 en: 23 Mayo 2010, 20:24 pm »

Exactly... creo que la duda fue respondida, aunque se fue por una rama interesante también.
En línea

.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #16 en: 23 Mayo 2010, 20:36 pm »

Aunque aun no me he metido con listas, pilas y colas, he visto mas o menos como funcionan... En esos temas te daras cuenta que no te tienes que dar mala vida por lo de pasar punteros por referencia... ya que se asignan las direcciones...

Me explico declaran los objetos globales, retornan direcciones y se las dan al puntero (a la lista por ejemplo), trabajan con objetos (clases) y muchas otras formas de trabajar las direcciones, sin usar lo de "punteros por referencia"...

Weno te lo digo porque yo por ejemplo, nunca he hecho eso que tu dices... Y ya tenia unos 6 o 5 meses estudiando C++... Pero no esta demas saberlo... Lo que dije en el mensaje anterior lo saque de un foro... Pruebalo a ver como te va, y me avisas  :xD por eso uso tanto la palabra "creo"  :laugh:

Si no funciona me pongo a investigar sobre eso...

Pero pes espero que funcione porque hoy no toy de animo para estudiar...

Saludos...
En línea

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



Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: C/C++ Dudas parámetros
« Respuesta #17 en: 23 Mayo 2010, 20:58 pm »

Usar referencias y punteros depende exclusivamente de lo que quieras hacer. No es algo que dependa del gusto del programador, ya que usar punteros en lugares donde una referencia basta es una mala practica.

Lo primero que hay que tener en cuenta es que una referencia no es un puntero.
Una vez que se asigna una referencia, no puede ser separada del objeto ya que la referencia no tiene entidad propia (a diferencia de un puntero) la referencia es inherente al objeto, es el objeto en si.

En cualquiera de los casos, siempre que uses parámetros no constantes en una función (como un puntero, no-const) estas implícitamente diciendo que dicha función no debe fiarse del valor, incluso, debe controlar que sea valido.

También hay que destacar que es bastante difícil lograr que una referencia sea NULL, por lo tanto siempre que necesites modificar la referencia y controlar si esta no es NULL, un puntero debería ser la mejor opción.

Como consejo -y creo que ningún programador de C++ va a decirte lo contrario- es que uses las referencias cuando puedas y uses los punteros cuando debas.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #18 en: 23 Mayo 2010, 21:09 pm »

Ahora aclarenme una duda a mi  :P

Cuando asignas memoria a un puntero, en una funcion... ¿Esa memoria al salir de la funcion sigue perteneciendo al puntero?... Si el puntero es pasado como parametro y por referencia... Porque he visto ejemplos en listas, en los que la asignacion de memoria se hace, y el puntero se paso de forma normal... (por valor quise decir) Luego dicho puntero sigue teniendo la memoria asignada...

Saludos...
En línea

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



Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: C/C++ Dudas parámetros
« Respuesta #19 en: 23 Mayo 2010, 21:21 pm »

Depende, necesito ver un ejemplo para responderte correctamente.

Por como lo expresas, supongo que es un ejemplo sencillo. En dicho caso, el puntero que tenga ámbito local a esa función desaparecerá cuando la función termine, por lo tanto si la dirección no se retorna o lo que estamos trabajando no es una referencia de algún objeto en otro lado, la dirección se pierde.

Pero como ya te dije, hay tantas formas de solventar esa problemática que tal vez una de ellas fue utilizada en el ejemplo que viste. Si queres, pone un ejemplo de la función y su llamada (sin obviar la declaración de los miembros involucrados) y lo vemos mas a fondo.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dudas con parametros para este método
Java
GaudyG 1 3,143 Último mensaje 4 Julio 2011, 02:38 am
por Valkyr
Dudas: Parametros remplazables | Programación Batch
Scripting
miguel_s777 1 4,007 Último mensaje 8 Octubre 2011, 18:17 pm
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines