Punteros sin formato y operador de dirección
Declare punteros, obtenga direcciones con & y comprenda los tipos de puntero.
Punteros sin formato y operador de dirección es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué es un puntero?
Un puntero contiene la dirección de otro objeto. Es una variable cuyo valor es una ubicación de memoria.
Declarar un puntero
El tipo de puntero es T*. Por convención, coloque * junto al tipo.
int x = 10;
int* p = &x; // p holds the address of x
std::cout << p; // prints an address
std::cout << *p; // prints 10El operador de dirección
El operador unario & obtiene la dirección de una variable. El tipo del resultado es T*.
int x = 42;
int* p = &x;El operador de desreferenciación
El operador unario * lee o escribe el objeto al que apunta un puntero.
*p = 100;
std::cout << x; // 100 (x changed through p)Punteros nulos
Un puntero que no apunta a ningún sitio debe establecerse en nullptr. Desreferenciarlo constituye un comportamiento indefinido.
int* p = nullptr;
if (p == nullptr) {
std::cout << "no target\n";
}Los punteros son números internamente
Una dirección es simplemente un entero, normalmente de 64 bits. El tipo del puntero indica al compilador cómo interpretar los bytes de esa dirección.
Puntero a const frente a puntero const
Hay dos posiciones independientes para const:
int x = 1, y = 2;
const int* p1 = &x; // pointer to const int (cannot modify *p1)
int* const p2 = &x; // const pointer to int (cannot reseat)
const int* const p3 = &x; // bothTamaño de los punteros
Todos los punteros tienen el mismo tamaño en una plataforma determinada: normalmente 8 bytes en sistemas de 64 bits. Incluso un char* tiene un ancho de 64 bits.
Punteros a funciones
Puede obtener la dirección de una función y llamarla a través del puntero.
int square(int x) { return x * x; }
int (*fp)(int) = □
std::cout << fp(5); // 25Punteros a miembros
Existe una sintaxis especial para los punteros a miembros de clases. Es poco habitual en el código moderno; la mayoría de las funciones de callback utilizan std::function o lambdas.
Por qué son importantes los punteros
Los punteros son fundamentales para:
- La memoria dinámica (
new/deleteo punteros inteligentes) - Las referencias opcionales (que pueden ser nulas)
- El polimorfismo (despacho virtual mediante punteros a la clase base)
- La interoperabilidad con API de C
Comprobación rápida
¿A qué se evalúa la expresión &x?
Resumen
Un puntero contiene una dirección. Utilice & para obtener una dirección y * para leer o escribir el destino. nullptr es el valor nulo seguro. Los punteros son fundamentales para la memoria dinámica, las referencias opcionales y el polimorfismo.
Preguntas frecuentes
¿La lección «Punteros sin formato y operador de dirección» es gratis?
Sí — el texto completo de «Punteros sin formato y operador de dirección» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Punteros sin formato y operador de dirección»?
Declare punteros, obtenga direcciones con & y comprenda los tipos de puntero. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Punteros sin formato y operador de dirección»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Punteros sin formato y operador de dirección
- Desreferenciación y aritmética de punteros
- nullptr y seguridad frente a punteros nulos
- Cuándo usar punteros frente a referencias