➡️ Pointers: detailed explanation (with C++ examples)

Поділитися
Вставка
  • Опубліковано 24 жов 2024

КОМЕНТАРІ • 98

  • @luisarroyo8612
    @luisarroyo8612 4 роки тому +37

    Tremenda explicación, clases como estas son una joya mal valorada, ojala y más gente la visualizara. Le doy gracias por compartir su conocimiento, se ha ganado un nuevo subscriptor, saludos!

  • @juanmanuelortego548
    @juanmanuelortego548 2 роки тому +5

    Tremenda explicación. De lo mejor que vi en AÑOS. Una lección que debería ser obligatoria para cualquier estudiante en lenguaje C/C++. Merecidísimo like para ud.

  • @Misa-fj6mn
    @Misa-fj6mn 10 місяців тому +1

    Increíble, días intentando entender punteros y acá entiendo en un ratito gracias

  • @pablobeckmann6494
    @pablobeckmann6494 2 роки тому +4

    Entendi mas que a mi profe de algoritmos y estructura de datos de la uni, sos una genia !! Un abrazo !!

  • @jaazpl624
    @jaazpl624 3 роки тому +16

    Mejor que mi clase de la uni, muy buen vídeo y gran trabajo divulgando contenido de calidad

  • @erickvasquez3785
    @erickvasquez3785 4 роки тому +7

    Que gran video. Al principio dude de verlo por la duración pero valió la pena cada minuto.

  • @jackreacher9155
    @jackreacher9155 4 роки тому +10

    Para que universidad si tenemos a Programación desde cero. Excelentes explicaciones.

  • @marzarte
    @marzarte Рік тому +4

    Eres increíble programadora, tus clases son tan fluidas, claras y consisas ,gracias sensei virtual, he aprendido y aclarado muchas dudas

  • @JonathanTAcuna-th6vz
    @JonathanTAcuna-th6vz Рік тому +1

    Deseo increiblemente, que hagas videos del resto de la materia de mi curso!!!!

  • @andresfeliperiostamayo7307
    @andresfeliperiostamayo7307 2 роки тому +2

    que nivel de pedagogia. primera vez que un tema me queda tan claro sin necesidad de reprogramarlo o reescribirlo.

  • @rondeau_choysky6663
    @rondeau_choysky6663 2 роки тому +1

    Muy buena explicación, me sirvió pero lo tendré que repetir muchas veces para lograr recordar todo jajaja. Me suscribo.

    •  2 роки тому +2

      ¡Me alegra de que el video te sea útil! El asunto de recordar todo viene con la práctica, así que no te preocupes por intentar recordarlo de inmediato sino más bien por comprender los conceptos y tratar de aplicarlos mientras practiques. ¡Éxitos!

  • @cesarpedroza4637
    @cesarpedroza4637 6 місяців тому +1

    Esta es la mejor explicación que encontré sobre este tema 👍

  • @antoniolopezalvarez8325
    @antoniolopezalvarez8325 2 роки тому +2

    Explicación perfectamente estructurada. Aborda los contenidos desde puntos de vista diferentes y de forma gradual. Los presenta hasta un nivel de profundidad accesible y apunta a niveles mas complejos. Muchas gracias

  • @javierllanos8741
    @javierllanos8741 3 роки тому +4

    Explicas 10^64 veces mejor que en mi universidad :D

  • @andrewjackson508
    @andrewjackson508 4 роки тому +9

    estoy deseando verlo, soy fan a tu modo de explicar, la lista de reproduccion de listas enlazadas es la mejor de internet en habla hispana. viniendo de usted este video garantizado que es de calidad. un saludo

  • @helmutinternet
    @helmutinternet 2 роки тому +1

    Mas claro que eso, imposible!
    Muchisimas gracias por subir este video

  • @harlesepc5906
    @harlesepc5906 2 роки тому +1

    Este video es lo maximo, que explicacion tan excelente.. La mejor explicacion que he visto en youtube, nadie que la sobrepase. Seria bueno saber una explicacion de esta forma pero con matrices.

  • @mtst5307
    @mtst5307 3 роки тому +2

    Muy buena explicación, mejor que las que dan en la universidad

  • @abdiasfiscaltemich5097
    @abdiasfiscaltemich5097 3 роки тому +2

    Super mega hiper explicado, muchas gracias por ayudarme a entender los punteros, debería también enseñar, en otro curso, como explicar también como usted.

    •  3 роки тому +1

      ¡Gracias! ☺ Creo que el único "secreto" es intentar recordar qué cosas yo misma no comprendía cuando aprendí el tema que intento explicar. ¡Saludos!

  • @OlbertPerez
    @OlbertPerez 2 роки тому +1

    Muy buena explicación la verdad, hay muchos conceptos que he escuchado antes y he entendido a medias, hasta este momento que he visto este vídeo completo.

  • @framb8627
    @framb8627 Рік тому +1

    ¡Muy bueno! Con esto queda muy claro el tema al respecto. Gracias por tan buen contenido

  • @noelrodriguez143
    @noelrodriguez143 2 роки тому +1

    Brutal, me ha quitado muchas dudas. Mil gracias por esta explicación.

  • @kinsley1468
    @kinsley1468 3 роки тому

    De todos los detalles, el que más me gustó es que los anuncios estan en lugares que no te corten la nota. Sigue explicando que contigo uno si entiende.

    •  3 роки тому +1

      ¡Gracias! Aunque por la ubicación de los anuncios no puedo llevarme el crédito, ya que eso es obra del algoritmo de youtube que, mediante machine learning logra saber cuáles son las pausas naturales del video 😀

  • @mentalthink1
    @mentalthink1 3 роки тому +1

    Están muy bien tus vídeos, las explicaciones son simplemente geniales... Sigo tu canal a ver que más me encuentro, gracias por tu labor.

  • @santucigod
    @santucigod 3 роки тому +1

    Muy completa la explicación. Haces videos de calidad, qué bonito.

  • @pimbort
    @pimbort 3 роки тому +1

    Muchas gracias, buena explicación, arriba lenguaje C y C++.

  • @jorgeguzman6685
    @jorgeguzman6685 2 роки тому +1

    Hermosa enseñanza.

  • @robertochavarria8345
    @robertochavarria8345 Рік тому +1

    En el min 9:32 casi me explota la cabeza y eso que voy por un cuarto de video, magnifico tutorial

  • @T0berius
    @T0berius 3 роки тому +1

    Sos una genia.
    Me sirvio y me encanto la clase; estoy eternamente agradecido.

  • @gzeta2251
    @gzeta2251 2 роки тому

    Muy bien explicado, le agradezco mucho el trabajo realizado y espero que siga así de útil y bueno este canal!

  • @DaveRoman-mc4nn
    @DaveRoman-mc4nn 4 роки тому +3

    Buen tutorial. Cabe recalcar que las referencias y punteros en C++ son diferente en cuestión sintaxis, sin embargo, a nivel de implementación, el compilador deberá de convertir la referencia a un puntero si por ejemplo lo usamos como parámetros, evidentemente, todo esto se lo hace implícitamente, sin que el programador se de cuenta, pero igual hay que tomarlo en cuenta. Otro punto que a pesar que las referencias son simplemente alias y que no debería de ocupar memoria, esto dependerá del compilador y de las optimizaciones que haga.

  • @brayannavarro4121
    @brayannavarro4121 2 роки тому +1

    Excelente explicacion, muchas gracias

  • @erikayarethb.6499
    @erikayarethb.6499 Рік тому

    ¡Excelente video! Gran explicación, muchas gracias

  • @enmanueltejada8872
    @enmanueltejada8872 3 роки тому +1

    Eres muy buena, sigue haciendo contenido, me gustaría ver uno de programación orientada a objetos en c++

  • @tombinocapo
    @tombinocapo 2 роки тому +1

    varias dudas aclaradas, gracias por el aporte =)

  • @WalterNicolasTarsia-io8sb
    @WalterNicolasTarsia-io8sb 7 місяців тому +1

    uuff. muchas gracias. muy detallado y simple, la explicion. lo q necesitaba.
    lo de "fuga de memoria" sucede mientras se ejecuta el programa o sucede incluso luego de cerrarlo?

  • @josejimenez-wd5rw
    @josejimenez-wd5rw 2 роки тому +1

    Excelente clase 10/10

  • @Obishman
    @Obishman 4 роки тому +4

    Muy bueno, muy clarito, muchas gracias!

  • @elianyeltzinpaniaguamariac4257
    @elianyeltzinpaniaguamariac4257 3 роки тому +1

    Gracias por tal explicación

  • @LuisAntonioToranzoToribio
    @LuisAntonioToranzoToribio 3 роки тому

    Conoces el termino "alojar"? En lugar de alocar que supongo querías hacer referencia a la función informática "malloc(ate)"=alojamiento de memoria o mejor memoria asignada (memory allocate=asignación de memoria)
    alocar=Diccionario de la R.A.E (Real Academia Española)=1. Causar locura. 2. Causar perturbación en los sentidos. Alocada=Persona que tiene cosas de loca o parece loca. Por lo demás el vídeo es de lo más completo que he visto. Gracias. Saludos desde España!

    •  3 роки тому

      ¡Hola! Gracias por tu comentario. Si bien soy consciente de las malas adaptaciones de palabras inglesas que se usan en el ámbito de la tecnología, hay veces que elijo usarlas por el hecho de que se las suele utilizar con frecuencia y es como posiblemente se encuentre en varios recursos e, inclusive, libros. En este caso, la función malloc es del lenguaje C, por lo que no aplica a este video (que trata sobre C++). Pero la traducción "alojar" no es la correcta, ya que podría inducir a confusión al dar la idea de que estamos almacenando un valor en ese espacio de memoria, mientras que la "alocación" (o "reserva" de memoria) es una operación que solo aparta cierta porción de memoria, del tamaño que le indiquemos, pero que no implica que se guarde nada en ella. Creo que la palabra "reservar" sería la mejor traducción.

  • @josepablo7270
    @josepablo7270 2 роки тому +1

    Excelente explicación.

  • @gabrielralfcaceresgabriell319
    @gabrielralfcaceresgabriell319 3 роки тому +1

    Muy Muy bien, muchisimas gracias, sigue compartiendo este tipo de información, gracias.

  • @lauraastua9031
    @lauraastua9031 3 роки тому +1

    Muchas gracias por estos videos

  • @DryadRoot
    @DryadRoot 2 роки тому +1

    Excelente el contenido y la explicacion, gracias!
    suscrito!! :D

  • @solracesoj6594
    @solracesoj6594 4 роки тому +2

    Sería genial otro video con punteros a funciones.

  • @ramiroluduenaa
    @ramiroluduenaa 2 роки тому +1

    Increíble la info, muy valiosa!

  • @danielgomez9920
    @danielgomez9920 11 місяців тому +1

    Sencillamente Tremendo

  • @Z_k404
    @Z_k404 3 роки тому +2

    Muchas gracias ☺️ me a servido de mucho 👍💪

  • @samuelcanochocce2521
    @samuelcanochocce2521 3 роки тому +1

    te recomendaré a mi profesor de progra :3

  • @hallo-welt
    @hallo-welt 4 роки тому +1

    Genial explicación, saludos.

  • @sebassnk9613
    @sebassnk9613 4 роки тому +1

    Muy bueno! Todo muy claro!

  • @str1132
    @str1132 4 роки тому +1

    Excelente !! Muchas Gracias

  • @guardianvicio3367
    @guardianvicio3367 3 роки тому +1

    Muy buen video que excelente explicación :D!

  • @davidalvarez325
    @davidalvarez325 Рік тому +1

    Que lindo muchas gracias

  • @johnray0101
    @johnray0101 3 роки тому

    que buena explicacion

  • @JulioCesar-hh9wq
    @JulioCesar-hh9wq 2 роки тому +1

    Gracias

  • @sebastianbustosguerrero5329
    @sebastianbustosguerrero5329 2 роки тому +1

    muy buen video

  • @veronicatapia2514
    @veronicatapia2514 3 роки тому +1

    sos muy Geniaaaaaaaaaaa

  • @simonperezrodriguez5723
    @simonperezrodriguez5723 3 роки тому +1

    Muy buen video sigue así

  • @HameKameHaa
    @HameKameHaa Рік тому +1

    Buen videoooo!!!!!!

  • @electricidadpalomar7001
    @electricidadpalomar7001 3 роки тому

    Hola, muy agradable la forma en la que explicas. Estoy intentando de llevar a cabo el primer ejemplo en Arduino
    tengo entendido que trabaja con C++:
    String saludo = "Hola";
    String* p;
    p = &saludo;
    Serial.print(p);
    ¿podrías decirme por que me da este mensaje de error?
    cannot convert 'String' to 'String*' in assignment
    ...

    •  3 роки тому +1

      ¡Hola! Entiendo que estás intentando imprimir la dirección de memoria de la variable "saludo" que está guardada en el puntero "p", ¿verdad? Según la documentación de Serial.print() de Arduino (www.arduino.cc/reference/en/language/functions/communication/serial/print/) podrías probar convirtiendo explícitamente el puntero a entero e indicando que te lo muestre en base decimal: Serial.print((long) p, DEC);
      O también podrías decirle que lo muestra como hexadecimal: Serial.print((long) p, HEX);
      ¡Espero que te sea útil!

    • @electricidadpalomar7001
      @electricidadpalomar7001 3 роки тому

      @ Pues no lo he podido lograr. Voy a reforzar mis conocimientos sobre tipos de datos y mas a delante retomare el tema Punteros. Muchas gracias !

    •  3 роки тому +1

      ​@@electricidadpalomar7001 no soy experta en Arduino, así que no puedo guiarte demasiado. Pero Arduino no usa C++ puro sino que tiene sus propias bibliotecas. Por ejemplo, tiene su propia clase String. En este ejemplo que diste, si lo traducimos a C++ (sin bibliotecas de Arduino de por medio), el puntero se imprime correctamente: onlinegdb.com/BJId16IV_
      Ese mensaje de error que te muestra suele aparecer cuando se intenta llamar a una función pasándole un argumento de un tipo diferente al que espera. Por eso es probable que el inconveniente esté en cómo Serial.print recibe sus argumentos o qué tipos de datos acepta. El mensaje de error está diciendo que esperaba un String donde le pasaste un puntero (un String*) y no puede hacer una conversión automática entre esos dos tipos.

  • @andrewjackson508
    @andrewjackson508 4 роки тому +1

    profesora una duda. en este ejemplo a y b tienen la misma direccion de memoria en la stack, pongamos 0x0DB8 y se refieren las dos al numero 7, mi duda es, cuando tenemos una funcion y dentro de ellay un parametro pasado por referencia como en por ejemplo int funcion(int &n1, int n2){}, esa variable n1 de dentro de los parametros de la funcion pasada por referencia que seria asignada a otra variable como a declarada en el main, por ejemplo int main( ) { int a = 100; int b = 25; return 0; }. ¿se refieren n1 y a a la misma direccion de memoria o se le asigna otra diferente a la referencia?
    eljemplo que a tuviera direccion $41B2 y de dato 100 y n1 que tuviera otra direccion de memoria como $41B5 y de dato la referencia que seria $41B2 . gracias de antemano

    •  4 роки тому +1

      Hola, Javi. Dejame ver si entendí bien tu pregunta... ¿El código sería algo como esto?
      int main() {
      int A = 100;
      int B = 25;
      funcion(A, B);
      return 0;
      }
      Si es así, el parámetro n1 dentro de funcion es una referencia a la variable A, lo cual significa que todo lo que hagas con n1 dentro de la función es equivalente a hacerlo directamente con A, porque ambos son la misma variable. Por ejemplo, si la función está implementada así:
      void funcion(int &n1, int n2) {
      n1 = 8;
      }
      al retornar la llamada funcion(A, B) vas a ver que la variable A ahora guarda el valor 8, ya que fue modificado mediante la referencia que había en la función. Esto es porque, dentro de la función, n1 es "otro nombre" para la misma variable. La dirección es la misma, porque no hay dos variables sino una, con dos nombres. Eso lo podés verificar haciendo cout

    • @andrewjackson508
      @andrewjackson508 4 роки тому +1

      ​@ ok bueno, lo primero de todo debo decir que la duda me ha quedado totalmente aclarada , muchisimas gracias de corazon. grandes explicaciones las suyas, y de verdad que lo son , ya que si te quieres enterar bien de las cosas en internet o en todo no es tan facil, una persona que explique bien no cae de los arboles, ojo y aunque las preguntas que hago parecen triviales es por que de verdad no estan bien explicadas no solo en la red sino tambien en libros, para poner un ejemplo yo entiendo bien lo que es un delegado, es decir un puntero a un metodo de un clase, pero en c++ es bueno entender los conceptos que se refieren a la memoria en detalle, si no ¿para que estudiar c++? hay otros lenguajes que le prestan mas atencion a las aplicaciones que al rendimiento. y estos detallitos que usted explica aclaran mucho. gracias
      pero queria decirle dos cosas y hacerle una ultima pregunta con respecto a las referencias.
      la primera es que habia oido mucho que da igual pasar una referencia o un puntero ya que una referncia es un puntero gestionado, y no es verdad , una referencia (ahora me queda claro) no tiene direcion de memoria propia, y un puntero si, de ahi todas las diferencias entre referencias y punteros.
      la segunda cosa es que tratando de asegurarme de que una referencia no tiene direccion de memoria propia sino que es la misma que la variable a la que se refiere me encontre con sus videos, y en la lista de reproduccion de Aprende a programar con C++ hay un video que se llama C++: Funciones, parametros por referencia y constantes y en ese video, del minuto 13. 37 al 15 39 se expone un grafico representando a modo de ejemplo como seria la memoria ram mientras se ejecuta ese programa con parametros por referencia y ahi me encontre confuso porque a la variabla n1 que es una referencia le asigna una direccion de memoria propia y dentro de esa direccion la direccion de otra (que por cierto en el video esta mal la direccion a la que se refiere , aunque si que esta corregida en los comentarios , lo que aumento un poco mi confusion) y ahora entiendo gracias a usted que eso vendria a ser un puntero y no una referencia. y con esto se puede decir que no solo entiendo el concepto sino tambien porque las referencias actuan como lo hacen y son tan utiles, mil gracias, no se como pagarte.
      mi ultima pregunta para no dejar cabos sueltos viene dada por lo de que una referencia una vez asignada a un dato ya no se puede asignar a otro:
      si una referencia se puede asignar a un solo dato , ¿porque en las funciones que tienen referencias se pueden llamar una y otra vez con diferentes datos?
      muchisimas gracias por todo.

    •  4 роки тому +1

      ​@@andrewjackson508 me alegra haber colaborado en aclarar tus dudas 😊. Respecto al otro video que mencionabas, es verdad que está bastante confuso y he querido rehacerlo ya por algún tiempo, para mejorarlo. Y creo que tus preguntas son muy interesantes para incluir las respuestas también en ese video.
      Y, si bien es verdad que muchas veces los compiladores implementan a las referencias como punteros, esto es un detalle de cómo funciona cada compilador en particular y no modifica el concepto de referencia (creo que, al contrario, puede resultarnos confuso), entonces es algo que decidí no incluir en el video.
      Esto que preguntás sobre cómo puede llamarse repetidas veces usando distintos argumentos a una función que tiene parámetros por referencia, se explica por los registros que se crean con cada invocación (lo que se ve en el 13:20 de este video): cuando una función es invocada, se reserva un espacio de memoria stack para ella, conteniendo todas las variables que necesite (incluidos parámetros). Cuando la función retorna, ese espacio se libera y se "borran" las variables de la memoria. Entonces, cada vez que se la invoca, se crea un nuevo espacio ("registro") en memoria y vuelven a crearse sus variables. Así que, si tuviéramos un código como este:
      void funcion(int& n1) {
      n1 = 0;
      }
      int main() {
      int a = 100;
      int b = 25;
      funcion(a);
      funcion(b);
      }
      lo que sucede es que, con la invocación funcion(a) se crea un registro que contiene a n1 como alias de a. Al retornar, ese registro "desaparece" de la memoria y con la llamada funcion(b) se vuelve a crear nuevamente, ahora con n1 como alias de b. Entonces no es que la referencia haya cambiado, sino que se destruyó y se volvió a crear. Lo que no podemos hacer es crear una referencia, inicializarla para que sea "alias" de una variable, y luego querer que sea alias de otra. Tal vez este ejemplo sea útil para ver que eso sí es imposible de hacer: onlinegdb.com/S17yivBiL

    • @andrewjackson508
      @andrewjackson508 4 роки тому +2

      @ perfecto, mil gracias

  • @carlosbustamante2977
    @carlosbustamante2977 2 роки тому

    Hola ¿por que en el minuto 39:57 cuando usas "function(z)" la "Z" va sin ampersand?

  • @cesargabrielarrietacarrasc3169
    @cesargabrielarrietacarrasc3169 2 роки тому

    Hola para poder usar punteros en vsc descargaste algun plugin adicional??
    porque escribi los codigos tal cual el video y me tira este error
    identifier "P" is undefined
    cuando apunto el punteo a una variable osea cuando escribo P = &saludo;

    • @efectibit
      @efectibit 2 роки тому

      Los punteros son inherentes al lenguaje. Físicamente todo se maneja con punteros, pero no todos los lenguajes te dejan usarlo.
      Respecto a "P is undefined" posiblemente sea porque no has declarado P.
      Debes declararlo similar a:
      char * P;

  • @TheLurleenGamespro
    @TheLurleenGamespro 3 роки тому

    Tendras un video de como configurar el VSC? No encontre una forma facil e intuitiva de hacerlo

    •  3 роки тому

      ¡Hola! No tengo videos sobre cómo configurar Visual Studio Code para C++. Solo para descargar Qt Creator: ua-cam.com/video/gLm6BtGqdog/v-deo.html y acá cómo crear un proyecto de consola en ese IDE: ua-cam.com/video/ACy_zOR-3IQ/v-deo.html

    • @carlosbustamante2977
      @carlosbustamante2977 2 роки тому

      @ ¿podras hacer uno? por favor!

  • @sebastianlevano6110
    @sebastianlevano6110 2 роки тому

    Grande capo

  • @mozanapon
    @mozanapon 3 місяці тому

    9:24 Barrasss

  • @albertosantiago6600
    @albertosantiago6600 4 роки тому

    puedo seguir el curso con el lenguaje java

    •  4 роки тому

      Si bien el concepto de punteros está presente en muchos lenguajes, Java no usa punteros de manera explícita. Pero sí usa referencias y este tema te va a servir para saber cómo se implementan los objetos en memoria.

  • @xabier1698
    @xabier1698 3 роки тому +1

    a=True
    while a==True:
    print("Gracias")

  • @zoizoi8841
    @zoizoi8841 3 роки тому

    Pregunta: ¿Porqué en el 21:24 sale 4, si es int debería ser 2 bytes?

    •  3 роки тому +1

      La cantidad de espacio que ocupa un int puede variar de acuerdo a la implementación del compilador usado y a la arquitectura. Lo más usual es que ocupe 4 bytes en arquitecturas de 32 bits, 2 en las de 16 y 8 en las de 64.

    • @zoizoi8841
      @zoizoi8841 3 роки тому +1

      @ muchas gracias, quedo muy claro y felicitaciones, muy buen contenido.

  • @luisalbertozambranobonilla709
    @luisalbertozambranobonilla709 4 роки тому

    yo tengo visual studio pero compila solo en python. Como puedo hacer para que compile c++

    •  4 роки тому +1

      Vas a necesitar agregarle la extensión para C++ y tener un compilador de acuerdo a tu sistema operativo. De todas formas, el IDE que usé fue visual studio code por comodidad, pero puede utilizarse cualquiera, incluso alguno online como el que está en www.rextester.com o www.onlinegdb.com (con C++11 o superior).

    • @luisalbertozambranobonilla709
      @luisalbertozambranobonilla709 4 роки тому

      @ gracias por la respuesta

  • @danielreyesepitacio8406
    @danielreyesepitacio8406 Рік тому

    Ahora entiendo por qué prefieren python 😂😂😂

  • @montevideooculto2996
    @montevideooculto2996 4 роки тому +1

    mm q vos encantadora, quiero que me digas cosas lindas al oido...

  • @darkfemto126
    @darkfemto126 4 роки тому +1

    1er comentario

  • @fabians1295
    @fabians1295 Рік тому

    Magnífica explicación !! Gracias 😄

  • @angelffg
    @angelffg 4 роки тому +1

    Excelente Video y explicación!