Explicacion de que son y para que se usan las funciones Calloc y Free con un vector dinamico
Пікірлер: 33
@josellamas11219 жыл бұрын
Exelentes videos, me sirven mucho, no tuve la oportunidad de estudiar y el sueño de progrmamar sigue vivo, gracias
@alejandropereyra29105 жыл бұрын
sos un crack. Tu curso es gratuito pero tendríamos que darte algo pago. no se en que universidad enseñas o a que te dedicas pero esto del compartir conocimiento a distancia es lo tuyo sos un crack hermano un crack!!
@pablosalina9250 Жыл бұрын
Tus videos me estan ayudando muchisimo a entender C.Eres un crack!
@axelhiram92924 жыл бұрын
Perfecto!! 2020 y hasta el momento no hay ningún dislike
@EmpiezaAProgramar4 жыл бұрын
No mientas al diablo!! xD
@cesargamboa135 жыл бұрын
/* Version propia ligeramente mejorado el output y bien comentado. Espero le sea útil a alguien Bloque 07.03: Vector con 100 enteros entre 0 y 2 y contar con un vector dinamico cuantas veces aparece cada uno Uso de funciones Calloc y Free Version por: Cesar Gamboa */ #include #include #include void aleatorio(int vector[], int n); int main(){ system("color 0A"); system("cls"); int i,op; int N=3,M=10; int vector[M]; int *contador; //calloc se usa para lo mismo que malloc, para asignar memoria, pero se diferencia en que no se multiplican los elementos, o sea se declara (*int)calloc(N,sizeof(int)) //la otra diferencia es que calloc inicializa el espacio de memoria luego de asignarlo. Malloc se usa cuando no importa que hay dentro de lvector dinamnico, mientras que calloc // se usa cuando querramos que el contador se inicialice en 0. Calloc es mas lenta por que inicializa los elementos. contador = (int*)calloc(N,sizeof(int));//asigna espacio de memoria e inicializa los espacios del vector en 0 if(contador==NULL){ printf("No se ha podido asignar la memoria "); }else{ //inicializar vector estatico con numeros aleatorios aleatorio(vector,M); //verificar cuantas veces se repite un numero for(i=0;i
@ivangutierrez73334 жыл бұрын
Papel y boli, es la clave
@Alan-fu2vx8 жыл бұрын
Me encanta como en los primeros bloques tenes como ~30k de vistas, y en estos ultimos ~3k... Yo estoy tardando como 1 mes en terminar este 'curso', pero lo voy a terminar xD Y despues a OOP con el de Java !! Cuantos seremos los que ademas de seguir el curso tambien hicimos todos los ejercicios que postea de las practicas de su universidad... lol
@EmpiezaAProgramar8 жыл бұрын
+Alan Randsom Seguro que pocos, pero es la auténtica manera de aprender a programar, con ver solo videos y sin practicar no se aprende. Un saludo.
@Alan-fu2vx8 жыл бұрын
Totalmente ! "A programar se aprende programando".
@iTiago989 жыл бұрын
¿El vector "contador" se hace dinámico para ejemplificar el uso del calloc? Lo digo porque no se cambia en ningún momento el espacio de memoria ocupado por él, por lo que podría haberse hecho estático. Muchas gracias por tus vídeos, dicho sea de paso.
@keysersoze42 жыл бұрын
Es cierto que no se cambia el espacio de memoria del vector, pero al usar calloc directamente, te ahorras de escribir un bucle for que haga que todos los valores de ese vector se inicialicen en 0.
@iTiago982 жыл бұрын
@@keysersoze4 Respondiendo a las 2 de la mañana a un comentario de 2015 en un vídeo de aprender a programar. Usted, señor, puede contarme entre sus admiradores.
@musicaclasicasymas85823 жыл бұрын
Como puedo hacer;;;; mensaje un vector tipo int con reserva de memoria dinamica, usando la funcion calloc
@axelok98357 жыл бұрын
Una pregunta.Si yo uso un vector dinámico y guardo 3 números y luego lo vuelvo a usar y y guardo 5 numeros. En total estoy ocupando el lugar de los 8 números o de los últimos cinco?
@enzo74006 жыл бұрын
Para hacer eso primero tenes que usar la funcion realloc para redimensionar tu vector dinamico. Si inicialmente usaste malloc para asignar 3*sizeof(int) bytes, y colocaste los 3 valores, luego si queres agregar 5 mas, tenes que hacer asi: vector=(int*) realloc(vector,8*sizeof(int)). Ahora el vector estará en otra direccion de memoria, con [8*sizeof(int)] bytes de reserva, donde ya estaran alojados los 3 numeros originales, y el espacio libre disponible para otros 5 numeros, lo rellenas manualmente. Saludos!
@scenesmovies74058 жыл бұрын
Emilio para que se usa dos o tres o mas punteros ... No lo explicaste ...
@agustinlyon81733 жыл бұрын
A ver si entendí, op almacena un valor aleatorio de 100 numeros entre 0 y 2... Por lo cual en la siguiente linea, el vector dinamico cuando le decimos contador + 1 (suponiendo que op devuelve un 1 ), se va a la posicion 1 del vector y le suma un elemento. op = vector[i]; *(contador + op) += 1 Despues vuelve a ejecutarse, y op devuelve esta vez 0, entonces me voy a la posicion 0 y le sumo un elemento. Y asi sucesivamente con todas las posiciones sumandole uno hasta que se cumpla la condicion de menor a 100. Estoy en lo correcto? xD me confundio un poco eso pero creo que es asi
@luis36647 жыл бұрын
Disculpa tengo una duda sobre la funcion free, solo sirve para liberar memoria dinamica o para la estatica tambien? y tambien quiero saber si aplico free se pierden los datos almacenados en ella osea q si los intento mostrar de nuevo no saldran?
@antoniotxdr58572 күн бұрын
Para la dinámica ya que solo sirve al usar malloc y calloc
@VideoRacion10 жыл бұрын
Tengo una duda, porque al principio tienes void aleatorio(int vector[], int N); y al hacer la función void aleatorio(int vector[], int tam) es un error tuyo o es por algo en especifico?, ya que si yo lo hago como tu enseñaste al poner tal cual la funcion, me muestra todos los números y al final la suma. ./memoria3 1 1 0 1 2 0 2 2 2 1 1 1 0 2 2 0 0 0 2 2 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 2 1 2 1 0 0 1 0 1 1 0 1 0 0 0 2 2 2 0 2 1 0 0 1 2 1 2 0 1 2 0 0 0 2 2 1 1 0 1 2 1 0 0 2 0 2 1 0 2 1 2 0 2 0 0 1 1 2 1 2 2 0 39 33 28
@EmpiezaAProgramar10 жыл бұрын
Video Ración En el prototipo y en la funcion, puedes poner los nombres que quieras a los parametros, aunque sean diferentes entre ellos. Realmente en el prototipo solo necesita saber el compilador el TIPO de los parametros, es decir, si son enteros o lo que fuese, pero es mas rapido copiar y pegar la cabecera de la funcion... por eso lo hago asi y ademas es menos lioso para las personas al inicio. Un saludo.
@omarlandaeta16716 жыл бұрын
Esto pasa porque la función aleatorio esta imprimiendo el contenido del vector. Seguro copiaste y pegaste la función y se te olvido borrar el printf("%i, ",*(vector+i));
@gerardorojasvite50577 жыл бұрын
Por qué en la función aleatorio se pone int tam?
@TheMarrioser7 жыл бұрын
porque así podrías usar esa misma función "aleatorio" en otro programa sin tocar nada más que el limite de los números que ser repiten. Espero que me entiendas
@carlossantaella1398 жыл бұрын
si en vez del calloc pongo este codigo: contador = (int*)malloc(C*sizeof(int)); for(i = 0 ; i< 3 ; i++){ *(vec+i) = 0; } estaria usando de igual manera el gpu o seria menos requirimientos
@carlossantaella1398 жыл бұрын
+Carlos Santaella perdon en vez d vec va contador
@kevinender54097 жыл бұрын
drsshhhhhhhsh..drrshh te entendí XD
@miro02929 жыл бұрын
Hola buenas tarde. excelentes vídeos pasaba a felicitarte. me gustaria hablar con vos por imbox.
@EmpiezaAProgramar9 жыл бұрын
Miguel Rojas Gonzalez No suelo hablar por privado, si tienes algo que comentarme lo puedes hacer por aqui, si es algo privado lo puedes hacer con un mensaje privado. Un saludo.
@miro02929 жыл бұрын
vale. pues lo principal era agradecerte por esos vídeos tan bien realizados y muy bien explicado. lo segundo me gustaría saber si tienes algún vídeo en c sobre listas y colecciones. lo tercero es que facebook.com/FullProgramacion quiere apoyarte compartiendo tu canal y en fin en latinoamerica. asi los dos se podrían ayudar. no se que pienses. gracias por la atención prestada.
@gerardorojasvite50577 жыл бұрын
Alguien que me diga por favor cuál es mi error. #include #include #include void asignar (int vector[],int N); int main (){ int i,op; int vector [100]; int N=3; int *contador; contador = (int*)calloc(N,sizeof(int)); if (contador==NULL){ printf("No se ha podido asignar memoria "); } else{ asignar(vector,100); for (i=0; i