El operador de dirección (&)
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 3 de 63.
Ahora que puedes declarar punteros, necesitas aprender cómo almacenar realmente una dirección de memoria en ellos. El operador de dirección (&) es la clave para obtener la dirección de memoria de cualquier variable.
Cuando colocas el operador & delante del nombre de una variable, este devuelve la dirección de memoria donde se almacena esa variable. Piénsalo como si preguntaras "¿Dónde vive esta variable en la memoria?"
int age = 25;
int *ptr;
ptr = &age; // Almacena la dirección de 'age' en 'ptr'En este ejemplo, &age nos da la dirección de memoria de la variable age. Luego asignamos esta dirección a nuestro puntero ptr. Ahora ptr "apunta a" la variable age.
El operador de dirección es esencial porque es el puente entre las variables regulares y los punteros. Sin él, no podrías decirle a un puntero a qué variable apuntar. Recuerda que los tipos de datos deben coincidir; solo puedes asignar la dirección de un entero a un puntero declarado para enteros.
Desafío
FácilEscribe un programa en C que demuestre el uso del operador de dirección para conectar variables con punteros. Tu programa debe:
- Declarar una variable entera llamada
numbere inicializarla con el valor 42 - Declarar una variable de tipo carácter llamada
lettere inicializarla con el valor 'X' - Declarar un puntero a un entero llamado
num_ptr - Declarar un puntero a un carácter llamado
char_ptr - Usar el operador de dirección para asignar la dirección de
numberanum_ptr - Usar el operador de dirección para asignar la dirección de
letterachar_ptr - Imprimir las direcciones almacenadas en ambos punteros usando
printfcon el especificador de formato%p
Tu salida debe mostrar las direcciones de los punteros en el siguiente formato:
Address of number: [address]
Address of letter: [address]Las direcciones de memoria reales variarán entre las ejecuciones del programa, pero el formato y las etiquetas deben coincidir exactamente como se muestra arriba.
Hoja de referencia
El operador de dirección (&) devuelve la dirección de memoria de una variable:
int age = 25;
int *ptr;
ptr = &age; // Almacena la dirección de 'age' en 'ptr'El operador de dirección es esencial para conectar variables con punteros. Los tipos de datos deben coincidir: solo puedes asignar la dirección de un entero a un puntero declarado para enteros.
Usa el especificador de formato %p para imprimir direcciones de punteros con printf.
Pruébalo tú mismo
#include <stdio.h>
int main() {
// TODO: Escribe tu código aquí
// 1. Declarar e inicializar las variables
// 2. Declarar los punteros
// 3. Usar el operador de dirección para asignar direcciones
// 4. Imprimir las direcciones usando el formato mostrado
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas