En este programa se puede definir directamente, pero no siempre sabras el tipo de puntero que necesitas. A veces también querrás usar un mismo puntero para apuntar a diferentes tipos de datos en distintos momentos, para eso sirve la conversión.
suponete que queres guardar un array de numeros y no sabes cuantos numeros te van a dar. En memoria estatica no podrias porque tener que darle un tamaño a los arrays. Para poder guardar toda esa información necesitarias usar listas utilizando memoria dinamica y recorrerlas utilizando punteros. Espero que te sirva!
son punteros estas controlando la memoria fisica y con eso puedes programar la cantidad de datos que puede almacenar tu usb o la cantidad de musica que puede contener tu ipod entre otras cosas
Alguien sabe el porqué en el vídeo nº 39 menciona el cambio de un puntero tipo void a tipo int y lo hace de otra forma diferente a la que está aquí nombrando? En el caso de realizar el cambio como lo hace en el vídeo 39 me da un error en las direcciones aplicadas a este programa-------> Probando he visto que también se puede realizar como dijo en el video anterior NO SE OLVIDEN DE PONER LA LIBRERÍA void * p1 = NULL; p1 = malloc(sizeof(int)); *(int* )p1=3; printf("p1 convertido:%d ",*(int*)p1);
Este código sería mas o menos lo mismo? #include #include int main(){ void * p1 = NULL; p1 = malloc(sizeof(int)); *(int*)p1 = 3; printf("%d ", *(int*)p1); return 0; }
pero... aver, creo q se omite muchas cosas: - ¿Memoria dinamica es otro segmento de la memoria logica? o hace referencia a tamaños de memoria de datos? - ¿Malloc lo que hace es reservar un espacio en la memoria de tal forma que cualquier cambio de estado que sufra el programa, ese espacio no se vea alterado y se pueda usar independientemente del momento? - que es lo que hace exactamente (int *)?
Ah, y otra pregunta: - malloc lo que hace es reservar un espacio de memoria dinamica, no? pero solo se pasa por parametro el tamaño y no la direccion o la referencia de donde quieres reservar, ¿la reserva se realiza cuando el compilador para a la siguiente linea? Espero q me puedan explicar, gracias
Malloc reserva un espacio de forma dinamica, lo que le pasas de parametro es el tamaño total a reservar (dependiendo del tipo de dato que le des). Re que era un comentario de hace 9 años
no entiendo porque lo conviertes y no defines directamente p1 como int, yo lo hice así en un ejemplo y me daba bien el resultado, sin tener que convertir.
Hola, resulta que en clase nos han mandado implementar la funcion strdup(), pero me está costando entender qué es lo que hace realmente, ¿podrías ayudarme? Gracias de antemano. Y muy buen trabajo por los videos.
te amo ju 5:41 jajajaja.
6 años despues, y como me rei de eso ajajajaja
El messenger jaja que recuerdos!
xd
En este programa se puede definir directamente, pero no siempre sabras el tipo de puntero que necesitas. A veces también querrás usar un mismo puntero para apuntar a diferentes tipos de datos en distintos momentos, para eso sirve la conversión.
eso esta mas adelante! segui con el curso. Saludos!
Gracias, buena explicación!!
suponete que queres guardar un array de numeros y no sabes cuantos numeros te van a dar. En memoria estatica no podrias porque tener que darle un tamaño a los arrays. Para poder guardar toda esa información necesitarias usar listas utilizando memoria dinamica y recorrerlas utilizando punteros. Espero que te sirva!
Muchas gracias por la respuesta, un saludo.
Porque no descubrì tu canal antes??
Tengo el examen en enero
Mirarè todos tu videos! explicas muy bien!! :D
Excelente tutorial!!
Teamo ju
Chelin como puedo trabajar con memo dinamica con estructuras?
typedef struct s_producto{
char nombre[30];
float precio_base;
} t_producto;
main(){
t_producto producto, *p;
p=&producto;
void* p1=NULL;
p1=malloc(sizeof(t_producto));
void* p1=(t_producto*) p1;
p1=p;
p1->precio_base=1;
printf("precio base: %f", p1->precio_base);
}
son punteros estas controlando la memoria fisica y con eso puedes programar la cantidad de datos que puede almacenar tu usb o la cantidad de musica que puede contener tu ipod entre otras cosas
Tenes algo de Pilas, Colas y Listas campeon?
Alguien sabe el porqué en el vídeo nº 39 menciona el cambio de un puntero tipo void a tipo int y lo hace de otra forma diferente a la que está aquí nombrando? En el caso de realizar el cambio como lo hace en el vídeo 39 me da un error en las direcciones aplicadas a este programa-------> Probando he visto que también se puede realizar como dijo en el video anterior
NO SE OLVIDEN DE PONER LA LIBRERÍA
void * p1 = NULL;
p1 = malloc(sizeof(int));
*(int* )p1=3;
printf("p1 convertido:%d
",*(int*)p1);
Este código sería mas o menos lo mismo?
#include
#include
int main(){
void * p1 = NULL;
p1 = malloc(sizeof(int));
*(int*)p1 = 3;
printf("%d
", *(int*)p1);
return 0;
}
un tutorial de listas enlazadas plz
y para que sirve la memoria dinamica que se puede hacer con esta memoria que no se pueda hacer con la estatica
pero... aver, creo q se omite muchas cosas:
- ¿Memoria dinamica es otro segmento de la memoria logica? o hace referencia a tamaños de memoria de datos?
- ¿Malloc lo que hace es reservar un espacio en la memoria de tal forma que cualquier cambio de estado que sufra el programa, ese espacio no se vea alterado y se pueda usar independientemente del momento?
- que es lo que hace exactamente (int *)?
si mi prof explicara asi todo mundo pasaria
Ah, y otra pregunta:
- malloc lo que hace es reservar un espacio de memoria dinamica, no? pero solo se pasa por parametro el tamaño y no la direccion o la referencia de donde quieres reservar, ¿la reserva se realiza cuando el compilador para a la siguiente linea?
Espero q me puedan explicar, gracias
Malloc reserva un espacio de forma dinamica, lo que le pasas de parametro es el tamaño total a reservar (dependiendo del tipo de dato que le des). Re que era un comentario de hace 9 años
Faltó el free.
Igual buena la explicacion
no entiendo porque lo conviertes y no defines directamente p1 como int, yo lo hice así en un ejemplo y me daba bien el resultado, sin tener que convertir.
Flaco mañana llego a aprobar y te mando una casa de regalo
no entendi nada, eso de que conozco punteros y variables!!
cada vez mas complicado
Hola, resulta que en clase nos han mandado implementar la funcion strdup(), pero me está costando entender qué es lo que hace realmente, ¿podrías ayudarme?
Gracias de antemano. Y muy buen trabajo por los videos.
uh cualquiera deja