Puntos en C | Achraf Mad | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      1 Introducción

      2:21

    • 2.

      2 Introducción a los punteros en C

      12:16

    • 3.

      3 Cómo resolver el primer ejemplo práctico

      5:18

    • 4.

      4 Pase por valor y Pase por dirección en C

      3:28

    • 5.

      Aumento y decreto de 6 punteros

      6:54

    • 6.

      Cómo agregar y restar 7 puntos

      7:16

    • 7.

      8 punteros y arros

      11:15

    • 8.

      9 punteros para peligro salvaje

      10:42

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

81

Estudiantes

2

Proyectos

Acerca de esta clase

Cómo usar los punteros en C para sistemas Embedded clase te enseñará cómo usar los punteros en C para crear programas de sistemas embebidos.

Lo que aprenderás

  • Esta clase te enseñará cómo usar punteros en C para crear programas potentes de sistemas integrados.
  • Aprenderás cómo los indicadores pueden hacer tu código más eficiente y conciso.
  • Las lecciones están diseñadas para personas que tienen alguna experiencia en programar sistemas integrados, pero son nuevas para los punteros.
  • Después de completar esta clase, podrás escribir código que sea más eficiente y legible.
  • También tendrás acceso al código fuente para todos los programas de ejemplo que se cubren en la clase.
  • Entorno de desarrollo
  • ¿Qué son los punteros? ¿Cómo funcionan? ¿Por qué los necesitamos?
  • Cómo usar punteros y asignación de memoria.
  • PASE POR VALOR VS. PASES POR ADDRES

En esta clase exploramos qué son los indicadores y cómo permiten optimizar el código de programa.

De hecho, puedes armar programas sin usar punteros. Pero aceleran dramáticamente el tiempo de ejecución del programa, que a menudo es muy importante cuando trabajan con microcontroladores. En esta clase, dada la complejidad de ciertos tipos de datos y el valor de los bytes, se explicará la efectividad de la conversión de punteros.

El rendimiento del programa puede acelerarse significativamente con el uso de punteros cuando se trabaja en un algoritmo. En esta clase también aprenderás cómo se usan diferentes tipos de punteros en C.

Este classis diseñado para enseñar a los estudiantes cómo usar punteros en C para programar microcontroladores. La clase comienza con los conceptos básicos de los punteros y pasa a temas más avanzados. Los estudiantes aprenderán cómo usar los indicadores para crear, leer y escribir datos en los registros y la memoria de los microcontroladores. La clase también cubre cómo usar punteros con matrices y cuerdas.

Si buscas una guía completa para punteros en C, no busques más que esta clase. Los punteros son uno de los aspectos más importantes de la programación en C, y esta clase te enseñará todo lo que necesitas saber. Aprenderás cómo usar los punteros para crear matrices, cuerdas y estructuras. También aprenderás cómo usar punteros para controlar el flujo de programas. La clase está diseñada para principiantes, por lo que no se requiere experiencia previa con punteros.

Los temas incluyen:

  • Entorno de desarrollo

  • ¿Qué son los punteros? ¿Cómo funcionan? ¿Por qué los necesitamos?

  • Cómo usar punteros y asignación de memoria.

  • PASE POR VALOR VS. PASE POR DIRECCIÓN

  • OPERACIONES SOBRE PUNTOS

  • Resta y adición

  • Relación con los arros

  • Peligro, salvaje, vacío y puntos nulos

Conoce a tu profesor(a)

Teacher Profile Image

Achraf Mad

Creative Engineer

Profesor(a)

Hello, I'm Achraf.

A passionate engineer who loves to share his knowledge with the world

Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. 1 Introducción: Hola y bienvenidos este nuevo curso en el que vamos a masticar punteros en C. En este curso, aprenderás qué son punteros, cómo nos permiten optimizar el código del programa. Y aprenderás a convertir tipos de datos complejos en una secuencia de bytes. Se pueden desarrollar programas sin utilizar punteros, pero aceleran significativamente la ejecución del código del programa, lo cual es especialmente importante cuando se trabaja con microcontroladores. Y en este curso, cubriremos todo sobre eso. La mayoría de ustedes saben que los punteros es uno de los temas muy importantes. Por cada ingenieros de sistemas embebidos. Cualquiera que programa en C debe usar punteros o fallará atrás. Muchas entrevistas o desarrolladores de sistemas incrustados, entrevistas hacen muchas preguntas sobre punteros. Y el objetivo de este curso es ayudarte a empezar y aprender a usar punteros y los diferentes tipos de punteros de explosión, cubriendo una gran cantidad de temas importantes. explicaremos todo y te daremos ejemplos prácticos, asignaciones, y muchos otros recursos para ayudarte a dominar punteros en C. Ahora, digamos que estamos reloj arriba lo que vas a aprender en este curso. Aprenderás abordaje indirecto usando punteros. Entonces cubriremos diferentes tipos de punteros. Después de eso, hablaremos de punteros, dos tipos principales, y punteros a matrices. También hablaremos de punteros a funciones. punteros, el vacío, las variables dinámicas y las operaciones punteros. Y luego hablaremos tipos de datos, conversión usando punteros. Y todos estos temas serán cubiertos en detalles. Nuevamente, tomarás tareas para que estemos seguros de que tienes lo que explicamos. También explicaremos ejemplos prácticos. Los resolveremos juntos para darte una experiencia práctica. Gracias por ver esta introducción. Nos vemos por dentro. 2. 2 Introducción a los punteros en C: Hola y bienvenidos a esta nueva lección en la que vamos a hablar de punteros. El puntero es una variable que almacena la dirección de memoria como valor h. Las cosas podrían no estar claras en este punto. Entonces hablemos primero la sintaxis para crear un puntero. Entonces hablaremos de esta definición. Como se puede ver aquí, tenemos sintaxis diferente para definir un puntero. El primero es escribir en el tipo de puntero, agregar el signo de asterisco, luego escribir el nombre del puntero, agregar un punto y coma. Aquí sucede lo mismo, pero en lugar de escribir el asterisco cerca del nombre del puntero, lo estamos escribiendo cerca del tipo de puntero. La tercera sintaxis es la misma que las dos primeras, pero estamos dejando espacio después y antes del signo del asterisco. Ahora, en la práctica, se puede ver aquí que tenemos un puntero llamado PTR. El tipo de este puntero es entero. Y para hacer este puntero, hay que añadir el signo del asterisco. Ahora, aquí lo estamos agregando justo antes del nombre del puntero. Aquí lo estamos agregando justo después del tipo de puntero. Y aquí lo estamos agregando en el medio entre el nombre del puntero y el tipo. Ahora, como se puede ver aquí, no hay diferencia en estas tres sintaxis. Todos definen un puntero que apunta al tipo entero, que es el objetivo principal de un puntero. Ahora, de nuevo, un puntero apunta. Este es un puntero que apunta a una ubicación en la memoria. Por lo que de nuevo, el puntero es una variable que almacena la dirección de memoria como su valor. Ahora para dejar las cosas más claras, este es un ejemplo. El domicilio del operador es un operador unario representado por el símbolo. Y ahora si usted miró aquí a este símbolo, esto se le llama dirección del y signo. Da la dirección de cualquier variable si se precede al nombre de la variable. Para que esto sea más claro, si escribimos esto y x, ahora esta x significa darme la dirección de x La dirección de x se almacenará dentro de PTR. Y en este caso tenemos esta memoria. Y esta es la variable x. Ahora, la dirección de la variable x es de 1 mil. Ahora, el valor de x es diez dentro por memoria, pero el riesgo publicitario de x en la memoria es de 1 mil. Entonces para llegar a este número, que es de 1 mil, necesitamos escribir esto y x Entonces PTR aquí igualará 1 mil porque usamos el no firmado, lo que significa la dirección. Entonces la dirección del operador es un operador que toma solo un argumento. Es básicamente el y símbolo. Da la dirección de cualquier variable si se precede al nombre de la variable. Ahora. Y x es igual a diez, que es esto. Ahora, x es igual a diez. Es una frase correcta. Estamos creando una nueva variable llamada x. le estamos dando un valor de diez. Entonces irá a la memoria, creará aquí una nueva variable llamada x, y le está dando un valor de diez. Ahora int asterisco signo PTR, estamos creando un puntero de tipo entero llamado BT off. Y aquí está ese punto o que creamos VTR. Y el tipo de datos es entero. Ahora, el último paso es agregar una dirección dentro del puntero. Para hacer eso, usamos esta línea, PTR equivale a dirección de x Ahora un signo, de nuevo, se llama a otros. Vamos a encontrar la dirección de x, y vamos a almacenar la dirección de x dentro de BPR. Entonces la dirección de x aquí es de 1 mil. Por lo que estamos almacenando 1 mil dentro de BT estamos usando esta línea. Ahora. Agregar esto fuera de PTR equivale a qué? ¿ Se puede pensar en ello? Ya mencionamos que y seno es la dirección de VTR, ahora es una variable en la memoria. Es un puntero, pero tiene una ubicación en la memoria. Entonces esto es todo PTR y el otro, por lo que VTR es 2000s, por lo que t equivale a 2 mil. Por lo que a este signo se le llama dirección de seno. Ahora, ten en cuenta que ese puntero en sí es una variable, tiene una dirección en la memoria de datos. Como cualquier variable. La única diferencia es que el puntero contiene una dirección de otra variable. No contiene datos regulares, posee una dirección de otra variable. Ahora, limpiemos la pantalla para que podamos finalizar esto. Ahora, aquí definimos entero llamado x e inicializarlo con valor a menudo. Después definimos un puntero a int llamado VTR. Después de eso, inicializamos el PTR con la dirección de x. esa manera, tenemos todo listo. Ahora, podemos hacer algunas operaciones. Primero, ya definimos nuestra variable llamada x, que tipo es entero, y le dimos un valor de diez. Definimos puntero a n llamado VTR y lo inicializamos. Ahora en este caso, mira esta frase. Tenemos el signo del asterisco, y tenemos el nombre del puntero. Y tenemos aquí iguales. Ahora el operador de desreferencia es un operador unario representado por el asterisco símbolo. A esto se le llama operador de desferencia. Y hay que memorizar estos nombres ya mencionamos y cuál es la dirección de eso. Ahora tenemos el signo de asterisco, que es el operador de desferencia. Se dice operador NO, lo que significa que solo toma una variable. Opera sobre una variable puntero y da la capacidad acceder a la variable a la que apunta el puntero. Ahora las cosas podrían no quedar claras en este punto, pero lo llamamos d electrones porque quita la necesidad de la dirección. Y te permite lidiar directamente con la variable a la que apunta el puntero. Vamos a explicar esto con un ejemplo. Como puedes ver aquí, tenemos x, tenemos VTR. Ahora PTR tiene la dirección de x, que es 1 mil, y x tiene un valor de 50. Ahora, ya sabemos que x tiene un valor de diez. Y para cambiarlo a 50, estamos haciendo lo siguiente. Lo primero que estamos haciendo aquí es que estamos escribiendo a ese operador de desferencia. Y lo puedes ver aquí. Entonces el nombre del puntero. Ahora esto significa ir a PTR y revisar la dirección dentro de ella, que es 1 mil. Y dirígete a la variable que tiene esta dirección. Entonces en este caso, la referencia PTR significa x, porque 1 mil apunta a x aquí, que es esta variable. Y le estamos diciendo que queremos almacenar 50 dentro de esto. No lo estamos almacenando dentro de PTR. Ptr sí es esto. Lo estamos almacenando dentro de esa referencia div de PTR, que es básicamente la variable x. Por eso quitamos diez. Y ahora un nuevo valor es 50. Ahora aclaremos el ANC y lo expliquemos de nuevo. Ahora, el valor x es diez. Cuando usamos el operador de desferencia, que es el signo de asterisco, le estamos diciendo que desreferencia PTR, que es un puntero. Desreferenciar un puntero significa ir a la variable a la que apunta un puntero. Y en este caso, el puntero está apuntando con esta dirección a la variable x Entonces al escribir asterisco o desreferencia PTR, también le decimos que vaya a x y que sea igual a 50. Ahora vamos a explicarlo. Si tenemos otra variable, digamos que tenemos y aquí y tenemos 3 mil aquí, que es la dirección. Y tenemos otro PTR aquí entre R1. Y vamos a sumar la dirección de y, 3 mil. Ahora si lo escribiste así. Ahora hagamos el valor de 55. Vamos a agregar signo asterisco PT R1 es igual, digamos 15. Ahora esto significa desferencia. Pt R1 significa ir a la variable o ir al puntero llamado BT R1. Obtener la dirección de la misma, y comprobar la variable a la que esta dirección está apuntando esta dirección está apuntandoy el cambio su valor a 15. Por lo que el primer paso va al puntero PT R1, comprobando la dirección. Después de comprobar la dirección, ir a la variable a la que está apuntando esta dirección, que en este caso es y, y cambiando el valor de y a 15. Por lo que ahora y es igual a 15. Ahora para resumir las cosas, no firmado significa la dirección de PTR. Cuando agregamos un signo de asterisco antes del puntero, estamos desreferenciando el puntero. Por lo que básicamente le estamos dando la capacidad de acceder a la variable a la que apunta el puntero. Y este es el objetivo principal de ese signo de desferencia. Ahora, en la siguiente lección, vamos a resolver un ejemplo práctico que necesito que intentes resolverlo por su cuenta. Necesitaba crear un programa que definiera un entero e inicializarlo con ellos, luego imprimirlo. Posteriormente, defina un puntero que apunte a ese entero y cambie el valor del entero a través del puntero a B20. Entonces imprímela de nuevo. Ahora la salida esperada es x antes de que el cambio sea diez. X después del cambio es 20. Asegúrate de resolverlo antes de pasar a la siguiente lección. Gracias por ver esta lección. 3. 3 Resolución del primer ejemplo práctico: Hola y bienvenidos a esta nueva lección en la que vamos a resolver la primera pregunta. Es necesario crear un programa que defina un entero e inicializarlo con diez, luego imprimirlo. Después. Defina un puntero que apunte a ese interior y cambie el valor de la n a través de los punteros a B20. Entonces imprímalo otra vez. El producto debe ser éste. X es diez, luego x después cambiarlo usando puntero, será 20. Para resolver esta pregunta, todos usan Visual Studio Code. Ve al Menú Inicio y al código visual de estudio a la derecha. Aquí está. Ahora. Es necesario crear un nuevo archivo o un nuevo proyecto. Ahora, archivo, nuevo archivo. Y aquí hay que hacer click en seleccionar un idioma y elegir C. Ahora, estamos listos para ir. El primer paso es incluir la biblioteca de salida de entrada std string.h, que es la biblioteca principal de salida de entrada estándar para nuestro programa. Por lo que debería incluir STD. Orden de grabado. Después de hacer eso, necesitarás ir a n Quiero decir, esta será nuestra función principal que se ejecutará, no tomará nada que sea nulo. Y el primer paso aquí es definir un nuevo entero. Entonces x es igual a 0. Después imprimir f. Vamos a pedir al usuario que introduzca el valor. Por lo tanto, por favor ingrese un número. Ahora, necesitamos escanear este número usando scan f El número que saldremos que voy a escanear será un número decimal. Así que aquí, correcto. Todo esto fue explicado en nuestro curso de programación C. Y no hay necesidad de volver a explicar porque estamos enseñando punteros aquí. Ahora. Tenemos que imprimir de nuevo el valor anterior y el nuevo valor. Entonces x antes del cambio. X antes del cambio es el porcentaje d. Ahora necesitamos cambiar x usando punteros. Entonces vamos a crear un nuevo puntero. Hagamos que apunte a la dirección de x. Ahora, para cambiar el valor de x, vamos a utilizar el operador de desreferencia, que es el PTR astérix, y que sea igual a 20, que es el nuevo valor. Y vamos a imprimir la misma línea, que es esta. Pero diremos después del cambio. Ahora, tenemos todo listo y listo. Podemos cambiar esta x con el PTR de referencia y planificaremos lo mismo. Podemos sumar aquí, esta UTR y la otra disciplina que esto significa x también, porque estamos desreferenciando la dirección dentro del PTR, que es la dirección de x, por lo que será el valor de x. UTR y la otra disciplina que esto significa x también, porque estamos desreferenciando la dirección dentro del PTR, que es la dirección de x, por lo que será el valor de x. , observe el código. Simplemente puedes pegarlo en el Bloc de notas Plus, Plus, como ya explicamos, y guardarlo. Llamémoslo ejemplo punteros. Ahora tenemos que guardarlo como punto c. y vamos a ejecutarlo. Ahora qué punteros IGCSE, ejemplo, nazi. Después de eso, escribe un punto EXE. Y como pueden ver, es preguntarle a Dios, por favor ingrese un número. Digamos cinco. Ahora, x antes del cambio es cinco, x después del cambio es 20, que es exactamente lo que hemos hecho aquí. Cambiamos el valor de x usando punteros. Eso es todo por esta lección. Gracias por ver. 4. 4 Apaso por valor y Apaso por dirección en C: Hola y bienvenidos a esta nueva lección en la que vamos a explicar pase por valor y pasar por dirección. Ahora, en esta lección, vamos a discutir estas dos pestañas de pasar el valor y la dirección. El primer tipo se pasa por valor. Significa que estás haciendo una copia en memoria del valor de parámetros reales que se pasa. Una copia del contenido del parámetro real. Mientras que en el pasado por dirección o pase por referencia. Básicamente estás haciendo una copia en memoria de la dirección del parámetro real. Dos no están haciendo una copia del valor del parámetro. Estamos haciendo una copia en memoria de la dirección del parámetro real. Ahora, echemos un vistazo a estos ejemplos. Nuevamente, pass by value hará una copia en memoria del parámetro real mientras que pasa por dirección o refinanciación hará una copia en memoria de la dirección del parámetro real. Entonces aquí estamos haciendo una copia de la dirección. Aquí estamos haciendo una copia del parámetro real. Ahora, como se puede ver en este ejemplo, aquí tenemos una función y esta función se llama por función de valor. Toma entero x. Ahora esta función toma un argumento por valor porque toma un valor real, que es básicamente una variable x de tipo entero. Ahora aquí, cuando estamos llamando a la función, estamos pasando la variable que al hacer una copia del parámetro real. Aquí sólo estamos tratando con valores reales, parámetros reales, no estamos tratando con direcciones. Ahora, cuando se trata de pasar por dirección o referencia, como se puede ver, en esta función, tenemos una función llamada por otros función y toma un puntero como entrada. Entonces entero asterisco PTR, este es un puntero. Ahora, esta función toma una dirección como extrañas. Entonces la entrada a esta función debe ser una dirección. Y estamos pasando la variable z por otros aquí. No podemos añadir porque es básicamente un valor. Y esta función quiere una dirección. Entonces aquí agregamos el y signo, que significa la dirección de la misma. Como se puede ver aquí. Ahora la dirección de z se pasará a la función de dirección de bytes. Mientras que aquí el valor de z será pasar por función de valor. Entonces básicamente estamos haciendo una copia del parámetro real. Mientras que aquí estamos haciendo una copia en memoria de la dirección de la cual es la dirección del parámetro real. Y esta es la principal diferencia entre pase por valor y pase por dirección. Existen diferentes casos de uso y vas a tomar algunos ejemplos prácticos. Pero esto es todo lo que necesitas saber por ahora sobre pasar por valor y pasar por dirección. 5. 6 punteros incremento y decreto: Hola y bienvenidos a esta nueva lección. Hablaremos de operaciones en punteros. Ahora. El primer operativo de la que vamos a hablar es las operaciones de incremento y decremento. La operación de incremento incrementa el valor del puntero en un paso. Ahora, no dijimos por un byte porque este paso podría ser 148 o cualquier número de bytes es el tamaño del punto t Ahora, si escribimos PTR plus plus, si asumimos que PTR es un puntero a entero, entonces cuando estamos diciendo más, además, vamos un paso entero, que es básicamente cuatro bytes. Dependiendo de tu compilador. El compilador tiene entero como cuatro bytes. Significa que cada incremento agregará cuatro bytes a la dirección de PTR. Ahora asumiendo que una dirección PTR es de mil, significa que ahora estamos en 1004 por estos cuatro bytes. Por lo tanto, cada incremento o cada incrementos de puntero incrementará el valor del puntero en un paso. De nuevo, el stub es el tamaño de la puntita sin entero o cadena o carácter, o cualquier tipo de datos. Ahora cuando se trata del decremento, es el mismo escenario. Disminuye el valor del puntero en un paso. Está escrito así, PTR menos menos. Y si asumimos que el entero es de cuatro bytes, significa que irá cuatro pasos atrás, se convertirá en 996. Y así es básicamente como funcionan los incrementos y decrementos. Ahora veamos esto en la práctica. Ahora empecemos con un simple ejemplo. Hash incluye stdio.h. ahora int main, void. Y seleccionemos el idioma a ser c. ahora, vamos a crear una nueva variable y x es igual a diez, y creamos un puntero. Ahora, PTR sostendrá la dirección de x. Y esto es, estas son tres frases simples. Ahora, lo que tenemos que hacer es incrementar o disminuir el PTR. Pero primero tenemos que imprimir. Entonces vamos a escribir impresión f dirección PTR, y necesitamos imprimir la dirección del puntero. Ahora, agrega P como especificador de formato. Y p N aquí significa barra de puntero n. Y después de eso se puede agregar la dirección de una instancia de ECS. Se puede añadir PTR, ambos trabajos. Ahora agregaremos la dirección de x. Para evitar que el anuncio sea correctamente, necesitamos arrojarlo como vacío. Ahora, vamos a correr esto para ver cómo van a ir las cosas. Así que abre la carpeta conteniendo, primero guardemos este archivo. Vamos a llamarlo elemento puntero. Veamos. Ahora después de eso, combinemos este puntero. Vamos a usar ls primero, puntero GCC dot c. ahora vamos a encontrar un EXE. Y aquí tenemos dirección PTR es 01, F, 1 cuarto. Ahora podemos correr ese incremento y decremento para ver cómo van a ir las cosas. Aquí, se puede decir PTR más plus y PTR menos menos. Ahora notarás que si reemplazamos esto por PTR, intentemos ejecutar los códigos. Como pueden ver, estamos obteniendo los mismos resultados. Ahora. Vamos a imprimir lo mismo después de los incrementos, luego imprimir lo mismo después del colon. Ahora el incremento incrementará la dirección en cuatro, que es el número de bytes y un entero. Entonces lo recuperará por cuatro usando el decremento. Entonces veamos cómo van a ir las cosas. Volviendo atrás. Vamos a combinar usando GCC. Vamos a correr. Aquí está. Ahora, como se puede ver aquí, 61 E14. Después de que aumentamos en cuatro bytes, son 18. Ahora, volví a disminuir el valor, PDR menos menos. Así que ahora está de vuelta a uno por aumentado en cuatro bytes, luego disminuido en cuatro barras. Entonces ve a la ubicación original. Nuevamente, PTR, aumentar y disminuir dependiendo del tipo del punto. Ahora podemos cambiarlo a personaje. Ahora si volvemos aquí, intentemos combinar. Ahora corre, como se puede ver, ese actor es sólo un byte. Ahora está a los 17 al incrementarlo a los 18. Y al disminuir de nuevo escupir el 17. Para que como se puede ver, el incremento y decremento ocurre en el nivel de bytes dependiendo del tipo de datos. Y está incrementando y decreciendo la dirección. No el valor. Gracias por ver esta lección. Si tienes alguna pregunta, estoy aquí para ayudar a esto. 6. 7 punteros: adición y resta: Hola y bienvenidos a esta nueva lección en la que vamos a hablar de suma y resta en punteros. Ahora, para restar el valor del puntero, primero definamos un nuevo puntero. Entonces vamos a añadir x es igual a diez. Y esto crea un puntero. Señalemos este puntero a la dirección de x. Ahora, como en nuestro ejemplo anterior, los definimos y vamos a hacer operaciones al respecto. El primer paso es resta del puntero para restar valor del puntero. Ptr es igual a PTR menos, digamos cuatro. Porque estamos tratando con un entero. Aquí están asumiendo que el entero es de cuatro bytes. Pero puedes restar cualquier valor. Ahora una vez que ejecutes este comando, si asumimos que la dirección PTR es de mil, ahora se convertirá en 960 o 84, lo siento, porque tenemos cuatro bytes y cuatro por cuatro es de 16 bits. Entonces volvimos 16 poco. Ahora bien, esto es cuando se trata del nivel de bits. Ahora para hacer las cosas más claras, vamos a imprimir. Gracias. Así imprimir f, dirección, valor, el porcentaje sea costura y barra. Ahora aquí queremos imprimir el valor PTR. Debemos arrojarlo. Y luego podemos sumar B2. Ahora para imprimir el valor después de que restáramos cuatro de él. Volvamos y ejecutemos esto. Así que ahorre. Este es el nombre de nuestro expediente. Así que vamos a copiar el nombre. Ahora. Vamos a ejecutar este código. Ahora, compilador GCC E. Y aquí lo tenemos. Como se puede ver aquí. El valor antes de la resta es si B14. Ahora el valor después de la primera resta, la resta es 04. Y aquí volvimos. Como se puede ver, restamos cuatro de esto. Ahora, sabe exactamente cuántos pasos volvimos. Vamos a restar uno. Ahora guarde de nuevo ese código, vuelva atrás, combinado y ejecute el código. Ahora como se puede ver, cuando restamos uno, pasamos de 14 a diez. Volvimos cuatro escalones. Ahora si restamos cuatro, vamos a retroceder 16 paso. Ahora, otra cosa que puedes hacer con punteros es restar puntero del puntero. Entonces vamos a crear otra variable. Llamémoslo y Y vamos a crear otro puntero. Llamemos a éste y a esta herramienta. Y vamos a cambiar los valores x e y. beta1, beta2. Aquí tenemos PTR uno, y aquí tenemos PTR C2. Ahora, lo que tenemos que hacer es lo siguiente. Vamos a crear int x igual R1 menos PTR a. Aquí estamos asumiendo que tenemos dos punteros. Y ambos son punteros a entero, que es de cuatro bytes. Ahora PTR uno menos beta dos devolverá el número de pasos entre ellos. Entonces hagamos esto. Y el último paso es la impresión. El resultado es porcentaje d slash n. y n. aquí tenemos que agregar x sobre x. ahora, volvamos a la línea de comando. Ahora. Tenemos problema aquí. X se define de nuevo, por lo que necesitamos hacerlo. Ahora, como se puede ver aquí, tenemos punto o uno más. Tenemos punteros a abordar. Y restamos puntero una herramienta de puntero de fotograma. Y nos enteramos que el espacio entre ellos es este número. Ahora cuando se trata de la adición de punteros, podemos agregar un valor a un puntero. Para ello, simplemente podemos hacer lo siguiente. Podemos decir PTR V1 es igual a V2 R1 más digamos cuatro. Y podemos imprimirlo usando el comando print que todos hemos utilizado. R1, vacío B a R1. ¿ De acuerdo? Ahora, ya sabemos que tenemos sobre otros se imprimirán aquí. Entonces veamos cómo esto afectará el resultado. Ahora, editar EXP. Y aquí estamos. Esta es la dirección PT R1. Y esta es la dirección después de agregar cuatro al valor PT R1. Como se puede ver, se mueve del 08 al 18. Y de esto es de lo que estamos hablando. Puede agregar o restar valores fácilmente dependiendo del tipo de operación. Ahora, lo que no está permitido es, así que agregar un puntero a un puntero como el, como, restarlos aquí está prohibido. No está permitido, y resultará en un error del compilador. Si intentas agregar punto a 1 o dos con un signo más, obtendrás un error de compilación. Por lo que sólo se permite agregar un valor al puntero. No está permitido sumar dos punteros juntos. Pero puedes restar el valor de un puntero, o puedes restar dos punteros el uno del otro. Eso es todo por esta lección. Si tiene alguna pregunta por favor pregunte y si estás en el tablero. 7. 8 punteros y matrices: Hola y bienvenidos a esta nueva lección en la que vamos a hablar de matrices y funciones. Ahora, lo primero que debes saber es que el nombre de la matriz es la dirección del primer elemento en ella. Entonces si guardamos y ARR, que es una matriz que tiene diez elementos, entonces esta es la dirección del SE, del primer elemento y la matriz que es el elemento 0. Es exactamente como decir en riesgo de un son todos 0. Estos dos son idénticos. Así que definir una matriz usando este método significa que estamos apuntando a la dirección del primer elemento en la matriz. Ahora, todos los elementos de la matriz se guardan secuencialmente en la memoria. Lo que significa que si tienes un puntero al primer elemento de la matriz, incrementando el puntero hace que el punto o puntos al segundo elemento y sigas incrementándolo para llegar al tercero, cuarto, quinto, y así sucesivamente. Ahora, otra cosa buena a saber es que tratar con la matriz y el hecho que los datos animales sean la dirección de su primer elemento nos permite hacer muchas cosas usando matrices usándolas como punteros. Nuevamente, ARR aquí es la misma que la dirección de 0. Lo que significa que si pasa el nombre de matriz ARR a la función llamada, digamos función. Entonces función. Y se lo damos. Entonces en este caso, estamos pasando dirección. No estamos pasando valor. Por lo que este prototipo de función debe declararse como seguir función de vacío. Y aquí tenemos que asegurarnos que estamos agregando un puntero. No estamos pasando por valor. Estamos pasando pastel Alice, pesar de que estamos escribiendo, no estamos escribiendo nada que indique que se trata de un puntero. Pero como ya mencionamos, este es el nombre de nuestra matriz. Y el nombre de la matriz es básicamente la dirección del primer elemento en la matriz. Y esto viene mucho, un MCQ preguntas y entrevistas y en muchos escenarios diferentes. Ahora dentro de la función, cuando queremos desreferir PTR, que es el puntero. Esto significa que estamos accediendo al primer elemento de la matriz. Y si lo hicimos, incrementamos el PTR en uno. Entonces estamos accediendo al segundo elemento de esa matriz. B a R. Dos es el tercer elemento, y así sucesivamente. Es necesario asegurarse de tener estas notas en mente cuando se trata matrices dentro de C. Porque matrices son muy parecidas a los punteros, y la comprensión de los punteros hará tratar con matriz son un trabajo mucho más fácil. Ahora, otra nota importante es que TR subíndice y operador de desferencia al tratar con punteros y matrices. Ahora, el operador de subíndice, que es estos dos signos, se usó con matrices cuando estamos definiendo una nueva matriz. También se puede utilizar con punteros. Entonces digamos que tenemos un puntero. Entonces comentemos. Ok. Digamos que tenemos un puntero, PTR. Ahora, cuando decimos PTR 0, usando este operador de subíndice, significa lo mismo que decir, hermoso detalle de baile. Estos dos son idénticos. Estamos llamando al primer elemento o la primera dirección del puntero. Ahora, cuando queremos acceder a la segunda dirección después de la dirección puntero, simplemente podemos escribir PTR uno. Y entonces este caso estamos accediendo a la dirección al lado de esa primera dirección PTR. Y es lo mismo que ahora PTR uno aquí es lo mismo que desreferenciar PTR blas uno. Y PTR diez, por ejemplo, es lo mismo que desreferenciar PTR que había perdido diez. Y este es el punto principal aquí. Podemos usar el subíndice dos. Operador con punteros, al igual que matrices para alcanzar o encontrar un elemento exacto. Ahora, para aclarar aún más las cosas, ¿por qué no? Lo intentamos con un ejemplo práctico. Vamos a quitar todo esto. Ahora. En primer lugar, definiré una función. Y como la mayoría de ustedes saben, para definir una función, primero, necesitamos llamar al prototipo o iniciar un prototipo. Y luego necesitamos implementar la función, la implementación de la función. Entonces tenemos que llamarlo. Entonces empecemos primero con el prototipo. Vamos a llamarlo divertido. Y aquí y asterisco PTR. Entonces esta función tomará PTR o puntero como entrada y para devolver nada. Ahora, encontremos la implementación de la función. Quita esto, agrega dos llaves rizadas. Aquí adentro. Tenemos que agregar un bucle for. Dentro de esto para bucle se bucle de 0 a, digamos, diez I plus plus. Y aquí, necesitamos agregar impresión f. Y aquí tenemos que imprimir los valores. Y seríamos demasiado duros. Pero en lugar de luchar solo al PTR, usaremos el subíndice TR y agregaremos igual que con matrices. Después de hacer eso, podemos llamar a la función. Ahora aquí viene el truco. Cuando estamos llamando a la función, no estamos pasando, digamos un valor, estamos pasando una dirección porque como se puede ver en la implementación de la función, estamos recibiendo un puntero. Ahora vamos a crear una matriz y ARR entonces iguales, y vamos a darle diez valores. Entonces 12345678910. Ahora, para pasar una dirección a esta función, podemos hacerlo usando la matriz. Como ya mencionamos. Ya mencionamos que la matriz o matriz de diez es básicamente de la misma manera que llamar al primer elemento dentro de esa matriz. Entonces para llamar a la dirección del primer elemento, necesitamos pasarla usando ARR sin escribir nada más. Ahora, esto asegurará que el funk reciba la dirección del primer elemento. Y aumentará esta dirección en una usando subíndice PTR aquí mismo. Por lo que bucle desde el primer elemento hasta el último elemento y verá esto en acción. Salvemos esto y volvamos. Ahora, matrices GCC, punteros. Veamos. Ahora como pueden ver, aquí tenemos un tema, que es el hecho de que yo no esté definido. Entonces vamos a definirlo. Nuevamente. Ahora. Como se puede ver, acabamos de imprimir la matriz sin tener que pasar el valor de esta matriz. 12345678910. Y solo pasamos la dirección del primer elemento de esa matriz. Utilizamos el operador de subíndice puntero para recorrer esta matriz simplemente moviéndose de una dirección a la siguiente, a la siguiente al aumentar una, el PTR usando ese diesel o el operador de subíndice. Sé que las cosas podrían ser un poco confusas en este punto, pero con este ejemplo, hay que echar un vistazo rápido a este ejemplo de nuevo. Intenta ver esta lección más de una vez para digerir la información dentro de ella. Ahora, hagamos un resumen rápido. El nombre de la matriz es la dirección de su primer elemento. Entonces si tenemos esta matriz, entonces ARR aquí está la dirección de la matriz 0. Ahora, si pasas el nombre de la matriz o como en este caso a esta función, entonces estás pasando dirección a fin. La función. El prototipo debe declararse con un puntero como entradas. Ahora, dentro de la función func, cuando desatendemos PTR, entonces estamos accediendo al primer elemento de la matriz. Y podemos acceder al primer elemento ya sea escribiendo PDR, último para acceder al segundo elemento. O simplemente podemos usar PTR. Y aquí estamos usando subíndice o para I. Y estamos empezando por el primer elemento abordado. Entonces añade el segundo elemento, el tercer elemento. Y digo aquí, lo haría simplemente, porque estamos tratando con direcciones, no estamos tratando con valores, porque acabamos de recibir la dirección del primer elemento y estamos haciendo bucle a través de las direcciones. Y estamos imprimiendo el valor al que apuntan estas direcciones. Eso es todo. Este no es un ejemplo fácil, lo sé. Pero de nuevo, los operadores o digamos punteros no son algo fácil de aprender. Es por eso que necesitas ver esta lección más de una vez para digerir la información dentro de ella. Si tiene alguna pregunta o si algo no está claro en esta lección, por favor pregunte y la mandíbula, estaré más que feliz de ayudar. Gracias por ver. 8. 9 punteros salvajes y nulo: Hola y bienvenidos a esta nueva lección en la que vamos a hablar de puntero colgando y punteros salvajes. Un puntero colgado apunta a una dirección de memoria que solía contener una valiosa. Dado que la dirección a la que señala ya no se conserva, utilizarla dará lugar a un resultado esperado. Entonces para ver esto en acción. Ahora, aquí, el primer paso es crear un puntero. Así n astérix PTR. Ahora lo que tenemos que hacer es usar la función malloc. Esta función malloc volverá nula. Entonces necesitamos lanzar a un asterisco entero, que es el puntero a entero para convertir puntero vacío en puntero entero. Así que vuelve aquí y escribe entero, que es básicamente un puntero entero. Ahora proceda con el modelo y necesitamos llamar al tamaño de la función. Y vamos a resolver el tamaño de entero dentro de aquí. Después de hacer eso, crearemos una variable, llamaremos a, y la haremos igual 560. Entonces necesitamos hacer el punto o puntos a la dirección de una Entonces usaremos esa función libre. La función simplemente desasignará la memoria. Por lo tanto correcto, ser PTR. Eso es todo. Ahora, sí liberamos ese puntero. Ya mencionamos que el puntero colgado apunta a una dirección de memoria que se utiliza para sostener la variable. Dado que la dirección a la que señala ya no está reservada, usarla dará lugar a resultados inesperados. Ahora, para mostrarles el resultado inesperado, podemos hacer lo siguiente. Hicimos el asignar el PTR. Por lo que podemos escribir PTR igual a cinco para almacenar cinco dentro de esa desferencia VTR, que es una. y el último paso es la impresión. Entonces imprimir f. Y aquí usaremos porcentaje d para planear la referencia de PTR. Ahora guardemos el código. Y aquí estamos probando en puntero colgando. Entonces regresa, CLS, GCC. Vale, ahora esto ves punteros colgando c, k. ahora tenemos un problema. Olvidamos incluir un CD en vivo. Entonces vamos a incluirlo. Guardó el código, y regresa. Nuevamente. Aquí estamos. Ahora como se puede ver aquí, sí compilamos este código. Ahora, vamos a ejecutarlo un EXE. Y como se puede ver, está parpadeando. Ahora no hemos recibido nada. Debería haber impreso que diferentes frentes de PTR. Pero como ya mencionamos, desasignamos PTR. Por lo que este es un puntero colgado y usarlo después de la asignación resultará en resultados inesperados. Esto es lo que es un puntero colgando. Nuevamente, un puntero colgado es un puntero que apunta a eliminarlo o a los objetos asignados. Y hay que asegurarse de que no trazar tales escenarios. Y trata de evitarlos. Trata de no jugar con punteros. Los asignan o los eliminan sin saber lo que estás haciendo. Ahora el segundo tipo de punteros son los punteros salvajes. Ahora, comentemos esta parte. Mientras que el puntero es un puntero que se utiliza antes de la inicialización. Un ejemplo de eso es este extremo PTR. Si utilizamos la declaración print f e intentamos imprimir PTR usando la desreferencia PTR. Todavía no hemos inicializado el PTR con una dirección. Entonces a esto se le llama puntero while. Ahora guarda tus códigos, vuelve atrás y combínalo, luego corre. Como se puede ver, de nuevo, un resultado inesperado porque este es nuestro puntero. No hemos inicializado este puntero. Y por eso estamos enfrentando esto. Ahora. No se dibujan flechas, pero no hemos recibido ningún resultado porque. Este puntero no se inicializó para empezar. Ahora, ¿cómo convertir un puntero válido en otro? Entonces mientras puntero, es fácil. Como se puede ver, ya creamos el puntero, por lo que necesitamos que apunte a algo. Podemos inicializarlo simplemente creando otro entero, llamarlo, darle un valor de diez. Entonces diremos que PTR igualará la dirección de x Eso es todo. Y ahora podemos volver a ejecutar ese código. Como se puede ver, tenemos cinco, que es el valor de x Y este ahora no es un puntero salvaje. Por lo que tuvimos que inicializar el puntero para que no fuera un puntero salvaje. Y así es básicamente como se hace. Entonces comentemos esta parte, y hablemos de otro tipo de punteros, que es un puntero nulo. Ahora para asegurarnos de que no tenemos nuestro punto final o podemos inicializar un puntero con analogía, convirtiéndolo en un puntero nulo. La forma más fácil de hacerlo es simplemente copiando este extremo asic PTR, que es la inicialización del puntero. Y luego se cuenta el conocimiento correcto. Eso es todo. Esto se llama puntero nulo. Ahora también podemos imprimir este puntero. Manos. Ya puedes ver que estamos jugando, imprimiéndola, pero no es imprimir nada porque es un puntero nulo y un puntero vacío. puntero nulo apunta a nada o a la dirección de memoria a que los usuarios no pueden acceder Entonces en este caso, a esto se le llama puntero viejo. Entonces llamemos a este vino. Llamemos a esto colgando, y llamemos a este puntero nulo. Ahora, otro tipo de punteros es el puntero vacío. puede usar un puntero vacío para apuntar a una variable de cualquier tipo de datos. Se puede reutilizar para apuntar a cualquier tipo de dato que lo deseemos. Y se declara fácilmente escribiendo punto astérix vacío o PTR es igual a nulo. A esto se le llama puntero vacío, ya que son de naturaleza muy general, también se les conoce como punteros genéricos. Con su flexibilidad, los punteros vacíos también trae algunas limitaciones. Los punteros de vacío no pueden ser desreferenciados como cualquier otro puntero. Ahora, si intentas desreferenciar un puntero vacío, terminarás enfrentando un error. Si estás buscando realizar operaciones aritméticas en punteros vacíos, entonces necesitas escribir cast estos punteros. Ahora, typecasting es básicamente otro tema y no vamos a cubrirlo aquí. Pero hay que mecanografiarlo si lo vas a utilizar y operaciones aritméticas, punteros vacíos de grandes funciones de biblioteca Hughes y C como malloc y calloc, que asignan dramáticamente memoria devolvió punteros de vacío. También está la fuente de tono y la función de clasificación incorporada en C que tiene una función como argumento, que a su vez toma punteros nulos como argumento. Ahora, estos vienen en su mayoría el puntero vacío, puntero nulo, puntero salvaje, y puntero colgado generalmente viene y entrevista preguntas y las preguntas del MCQ. Por lo que debes asegurarte de tener todas estas inflamaciones escritas en un cuaderno para que puedas revisarlo cuando lo necesites. Y no tienes que memorizarlas todas, pero necesitas saber exactamente lo que cada uno de ellos está haciendo. Ahora, hagamos una revisión rápida. Un puntero colgando. El primero es un puntero que apunta a eliminarlo o al objeto asignado. El puntero salvaje, que es el segundo, es cualquier punto o que se utilice antes de la inicialización. Ahora para que no sea puntero salvaje, podemos hacerlo simplemente usando el puntero nulo. Y el último de nuestra lista se llama puntero vacío, que es un puntero que se puede utilizar para apuntar a una variable de cualquier tipo de datos. También se puede utilizar para apuntar a cualquier tipo de datos que queramos utilizar. Se declara simplemente escribiendo void ante el nombre del puntero y el signo astérix y dándole un valor de null. Eso es todo por esta lección. Gracias por ver.