[C con Clase] duda apuntadores

José Luis Torre joseluistorrehernandez en gmail.com
Lun Ene 5 11:42:48 CET 2015


Hola Omar:
De las dos formas es correcto, todo depende del espacio que puedas utilizar
dependiendo de la memoria del sistema.
Yo siempre utilizo memoria estatica salvo cuando necesito compartir memoria
entre varios usuarios (gnu/linux) y entonces utilizo memoria compartida por
varios procesos.

Saludos
Jose Luis
El 04/01/2015 10:47, "omar mendoza" <omar.p9 en gmail.com> escribió:

> ¡Hola a todos!
> Tengo una duda sobre apuntadores, si tengo
>
> struct Punto_ {
>     float x;
>     float y;
> };
>
> typedef struct Punto_ Punto;
>
> void suma(Punto *p, Punto *p1, Punto *p2) {
>     p->x = p1->x + p2->x;
>     p->y = p1->y + p2->y;
> }
>
> void show(Punto *p) {
>     printf("(x,y) = (%.2f, %.2f)\n", p->x, p->y);
> }
>
> int main()
> {
>     printf("Iniciando...\n");
>     Punto *p = (Punto *) malloc(sizeof(Punto));
>     Punto *pp = (Punto *) malloc(sizeof(Punto));
>     Punto *p_ = (Punto *) malloc (sizeof(Punto)); // diferencia
>     if (p == NULL || pp == NULL || p_ == NULL) {
>         fprintf(stderr, "Memoria no suficiente");
>         return 0;
>     }
>
>     p->x = 1.;
>     p->y = 2.;
>     pp->x = 1.;
>     pp->y = 2.;
>
>
>     show(p);
>     show(pp);
>
>     suma(p_, p, pp); // diferencia
>
>     show(p_); // diferencia
>
>     free(p);
>     free(pp);
>     free(p_);
>     return 0;
> }
>
>
> Cuál sería la diferencia si hago
>
> int main()
> {
>     printf("Iniciando...\n");
>     Punto *p = (Punto *) malloc(sizeof(Punto));
>     Punto *pp = (Punto *) malloc(sizeof(Punto));
>     Punto p_;  // diferencia
>     if (p == NULL || pp == NULL) {
>         fprintf(stderr, "Memoria no suficiente");
>         return 0;
>     }
>
>     p->x = 1.;
>     p->y = 2.;
>     pp->x = 1.;
>     pp->y = 2.;
>
>
>     show(p);
>     show(pp);
>
>     suma(&p_, p, pp); // diferencia
>
>     show(&p_); // diferencia
>
>     free(p);
>     free(pp);
>     return 0;
> }
>
> /////
> Es decir entre crear en el main
> Punto *p_ = (Punto *) malloc ....
> Punto p_;
>
> y pasarlo a las funciones
>
> suma(p_, p, pp)
> suma(&p_, p. pp)
> show(p_);
> show(&p_);
>
> Espero me haya explicado...
>
> Saludos
>
>
> --
> Omar Jonathan Mendoza Bernal
> "Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón
> Rojo
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150105/a78edcab/attachment.html>


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