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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  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,859 veces)
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


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

Me invente un ejemplo yo... Observa este code...
Código
  1. oid funcionx(int *e);
  2. int main(int argc, char *argv[])
  3. {
  4.    int *p;
  5.    funcionx(p);
  6.    for (int i=0;i<4;i++) p[i]=i+1;//Aca obviamente se vuelve loco...
  7.  
  8.    for (int i=0;i<4;i++) cout<<p[i]<<" ";
  9.    cout<<endl;
  10.    cin.get();
  11.    return EXIT_SUCCESS;
  12. }
  13.  
  14. void funcionx(int *e){
  15.    e= new int [4];
  16. }

Como solventas eso... Lo de asignar memoria con una funcion...

Saludos...

Que pregunta mas obvia... Y eso que yo mismo conteste... Aca tienes un ejemplo dr.~ donde se aclara todo...

Código
  1. void funcionx(int *&e);
  2. void apuntaa1(int *e);
  3. void apuntaa2(int *&e);
  4. int main(int argc, char *argv[])
  5. {
  6.    int *p;
  7.    funcionx(p);
  8.    for (int i=0;i<10;i++) p[i]=i+1;
  9.  
  10.    for (int i=0;i<10;i++) cout<<p[i]<<" ";
  11.    cout<<endl;
  12.  
  13.    apuntaa1(p);
  14.    cout<<*p<<endl;
  15.    apuntaa2(p);
  16.    cout<<*p<<endl;
  17.    delete[] p;
  18.    cin.get();
  19.    return EXIT_SUCCESS;
  20. }
  21.  
  22. void apuntaa1(int *e){
  23.    e++;
  24. }
  25. void apuntaa2(int *&e){
  26.    e++;
  27. }
  28. void funcionx(int *&e){
  29.    e= new int [10];
  30. }


« Última modificación: 23 Mayo 2010, 21:46 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 #21 en: 23 Mayo 2010, 21:46 pm »

Para asignar memoria con una función, lo solucioné con punteros dobles. Fijate en [C] - Duda estructuras.

Código
  1. void data_reserve(st_p **P){
  2.  (*P) = (st_p *)(malloc(sizeof(st_p)));
  3.  (*P)->name = (char *)(malloc(sizeof(char) * LIMIT));
  4.  (*P)->dir = (char *)(malloc(sizeof(char) * LIMIT));
  5.  (*P)->phone = (char *)(malloc(sizeof(char) * LIMIT));
  6. }

EDIT: Cierto, gracias por tu ejemplo.

Citar
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.

Gracias littlehorse, tomaré tu consejo.


« Última modificación: 23 Mayo 2010, 21:49 pm por dr.~ » En línea

.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


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

Me gusta mas como lo hize... Ademas eso ya te lo dije yo mismo, es que ando distraido, y no supe plantear la pregunta... Lo que quise decir es como?, cuando se trabaja con listas se asigna memoria (como las funciones push_back) con funciones externas al main... y sin pasar los punteros como referencias... ejemplo:
Voy a poner solo una parte el codigo completo esta en:
http://foro.elhacker.net/empty-t288131.0.html
Código
  1. struct nodo{
  2.    int nro;
  3.    struct nodo *sgte;
  4. };
  5. typedef struct nodo *Tlista;
  6. void insertaralfinal(Tlista &lista,int valor)
  7. {
  8. Tlista t,q;
  9. q=new(struct nodo);
  10. q->nro=valor;
  11. q->sgte=NULL;
  12.  
  13. if(lista==NULL)
  14. lista=q;            //Fijense aca
  15. else
  16. {t=lista;
  17. while(t->sgte!=NULL)
  18. t=t->sgte;
  19. t->sgte=q;}    
  20. }
  21.  
  22.  

Como es que funciona eso?, yo supongo que es porq se hizo un typedef en el que se define Tlista como un puntero y se pasa una referencia:

Código
  1. insertaralfinal(Tlista &lista,
Pero pes no estoy seguro... Asi que si alguien da detalles del funcionamiento interno de ese proceso...


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 #23 en: 23 Mayo 2010, 22:53 pm »

Es una referencia a puntero. Igualmente no leí el código con atención, los códigos de mapers me hacen doler la cabeza (podrías haber buscado otro ejemplo  ;D)

Saludos!
En línea

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


Desconectado Desconectado

Mensajes: 2.059


Coder ~


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

Es una referencia a puntero. Igualmente no leí el código con atención, los códigos de mapers me hacen doler la cabeza (podrías haber buscado otro ejemplo  ;D)

Saludos!

Idem  :xD
Citar
Me gusta mas como lo hize... Ademas eso ya te lo dije yo mismo, es que ando distraido, y no supe plantear la pregunta..
Igualmente, en C no podía utilizar new... y tampoco referenciar un puntero xD
En línea

^Winder^


Desconectado Desconectado

Mensajes: 2.776


El mundo no es tuyo, es de todos.


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #25 en: 24 Mayo 2010, 00:38 am »

Yo en C++ suelo usar & para los pasos por referencia, y los * para crear objetos grandes, pero no quiere decir que sea lo mejor :) como dice Little, dependerá de cada programador.

En línea


Yo apoyo la esperanza de Caylees. Frenemos la Leucemia:
www.cayleeshope.com
Libertad conquistada.  (Justicia ;-))
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 #26 en: 24 Mayo 2010, 00:43 am »

No, no fue eso lo que dije. Precisamente todo lo contrario.

Citar
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.

Saludos
En línea

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


Desconectado Desconectado

Mensajes: 2.776


El mundo no es tuyo, es de todos.


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #27 en: 24 Mayo 2010, 00:56 am »

La hora aquí es mala, Little  ;-)
En línea


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

Desconectado Desconectado

Mensajes: 583


WOLOLOOO! Deal with it x)


Ver Perfil
Re: C/C++ Dudas parámetros
« Respuesta #28 en: 24 Mayo 2010, 03:57 am »

Hay un par de diferencias bastante gordas con lo que son los pasos por referencia usando el operador * y el operador &

Una función con el & lo que hace es pasar la variable directamente a la hora de llamarla para indicarle a la función que cuando acabe el ámbito de la función que no se nos cargue la variable

Si a una función le pasas un puntero simple, lo que haces es crear por valor una variable que almacena una dirección de memoria (ojo, por VALOR), y qué pasa cuando acaba el ámbito de la función? la variable y su contenido se van a la basura :P

El ejemplo es el siguiente:

Yo tengo var1 de tipo entero y la función a la que paso var1 como parámetro es por puntero simple, lo que hace C++ es crear una variable de tipo puntero (digamosle mipuntero) que señala (que por cierto es de mala educación xD) a var1... cuando acaba la función, se nos elimina aquello a lo que apunta mipuntero, a que apunta? a var1, pues variable a la basura

Y es así como se puede ir a la porra un programa entero :P

¿Lo he explicado bien o he metido el remo como de costumbre? qué malo es programar a las cuatro de la madrugada :xD
En línea

Sie ist der hellste Stern von allen und wird nie vom Himmel fallen...
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 #29 en: 24 Mayo 2010, 04:09 am »

La verdad que la docencia definitivamente no es lo tuyo, porque explicando vas mal. Igualmente acepto la excusa de la hora, pero lee el hilo entero antes de postear  ;D. Lo único que se puede sacar en limpio de todo lo que dijiste fue lo de los ámbitos locales de las variables, pero eso ya esta mencionado en post anteriores. Precisamente por esa razón estábamos hablando de este tema. :D

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,157 Último mensaje 4 Julio 2011, 02:38 am
por Valkyr
Dudas: Parametros remplazables | Programación Batch
Scripting
miguel_s777 1 4,042 Último mensaje 8 Octubre 2011, 18:17 pm
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines