Programación General > C/C++
Re: Puntero o no?
chimps:
Si yo tengo la opcion de usar punteros o no usarlos, por ejemplo, para escribir valores del teclado hacia estructuras..
Cual es la mejor opcion, usar punteros o no usarlos?
Gracias
tenesor:
Hola!
Yo lo unico que te puedo decir es que uses los punteros cuando debas gestionar la memoria dinamicamente, usas punteros.
Lo de "para escribir valores del teclado hacia estructuras" no te entiendo muy bien lo que quieres decir...
Espero que esto te aclare algo...
Saludos,
Tenesor
chimps:
Lo que quise decir fue lo siguiente...
Suponete que yo tengo el siguiente codigo:
#include <stdio.h>
struct personas {
char nombre[30];
char apellido[30];
};
struct personas amigos, *p_amigos;
Para asignar un valor a las opciones de personas, yo puedo hacerlo de 2 formas:
1) printf("Nombre: ");
gets(amigos.nombre);
0
2) printf("Nombre: ");
gets(p_amigos->nombre);
De estas 2 formar, hay alguna que sea mejor o son las 2 iguales?
Gracias.
tenesor:
Ok, esto cambia las cosas... pero no tanto:D
Piensa que la esctructura
struct personas {
char nombre[30];
char apellido[30];
};
no es mas que eso, una estrucutra compuesta, en este caso, de dos variables, por lo tanto, se puede decir que la estructura es una especie de array (conjunto de variables:)) Por lo tanto, los punteros en este caso tienen la misma ventaja que si fuese un array (o cualquier otra variable), el alojamiento en memoria DINAMICO. Pero tambien tiene un problema, que debes reservarle memoria. Supongo que ya sabras manejar el malloc, pero por si acaso, aqui te pongo un ejemplo.
p_amigos = (struct personas *)malloc( sizeof(struct personas));
Con esto reservas memoria y el puntero p_amigos apunta a esa memoria reservada. Por supuesto, cuando no uses mas esa memoria, debes reservarla con free, en este caso, su uso sería
free(p_amigos);
Todo esto se puede resumir en lo mismo que te dije en el primer mensaje que postee, que el puntero tiene la ventaja de que puedes gestionar la memoria DINAMICAMENTE, no hay mas:)
Saludos,
Tenesor
chimps:
Ok, muchas gracias.
Navegación
[#] Página Siguiente
Ir a la versión completa