Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Comprender los Pointers | Introducción a los Punteros Inteligentes
C++ Smart Pointers
course content

Contenido del Curso

C++ Smart Pointers

C++ Smart Pointers

1. Introducción a los Punteros Inteligentes
2. Punteros Únicos
3. Punteros Compartidos
4. Punteros Débiles
5. Temas Avanzados

book
Comprender los Pointers

Qué es un Puntero

Puedes pensar en los punteros como coordenadas. Nos señalan ubicaciones específicas en la memoria y nos permiten acceder a los datos almacenados en esas ubicaciones.

Cuando declaras un puntero, creas una variable que contiene la dirección de memoria de otra variable. Puedes crear un puntero usando los operadores * y &.

h

pointer

copy
1234
int value = 42; // `p_value` now holds the memory address of `value` int* p_value = &value;

Punteros Nulos

Puedes usar palabras clave especiales para representar un puntero nulo null o nullptr. Un puntero nulo no apunta a ninguna dirección de memoria válida. Es esencialmente un puntero sin objetivo.

También puedes inicializar el puntero de tipo entero a null (o nullptr). Hacemos esto cuando no queremos asociar el puntero con un valor específico de inmediato.

h

null_pointer

copy
123
int* p_int = null; // `p_int` is initialized to be null double* p_double = nullptr; // `p_double` is initialized to be null

Reasignación de Punteros

Los punteros pueden ser reasignados para apuntar a diferentes direcciones de memoria. Sin embargo, reasignar un puntero sin una gestión adecuada puede llevar a problemas como fugas de memoria o punteros colgantes.

h

reassigning_pointers

copy
12345
int x = 42; // Create an integer variable and assign a value to it int y = 43; // Create another integer variable int* p_int = &x; // Make the `p_int` variable point to the address of the integer variable `x` p_int = &y; // Reassign the `p_int` variable to `y`

Aritmética de Punteros

La aritmética de punteros es un aspecto fascinante de los punteros. Te permite recorrer la memoria incrementando o decrementando la dirección que tiene un puntero.

Por ejemplo, considera el siguiente código donde creamos un arreglo de enteros y luego definimos un puntero para almacenar la dirección del arreglo. Dado que un arreglo contiene múltiples elementos, un puntero, por defecto, almacena la dirección del primer elemento, que en este caso es el entero 1.

h

pointer_arithmetic

copy
1234567891011
// Defining an array of integers int arr[5] = {1, 2, 3, 4, 5}; // The pointer holds the memory address of the first element in the array int* p_int = arr; // Incrementing the pointer makes the pointer point to the second value p_int = p_int + 1; // Dereference the pointer to get the actual second value int second_element = *p_int; // Equals to `2`

Para acceder al segundo elemento, incrementa el puntero en 1 y luego desreferéncialo usando el operador (*). Desreferenciar devuelve el valor almacenado en la dirección de memoria que tiene el puntero (en este caso, el entero 2). ¡Sigue los comentarios en el código para entender cada paso!

question mark

¿Qué almacena un puntero?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 1
Lamentamos que algo salió mal. ¿Qué pasó?
some-alt