El operador de dirección (&)
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 3 de 63.
Ahora que puedes declarar punteros, necesitas aprender a 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, devuelve la dirección de memoria donde se almacena esa variable. Piensa en ello como preguntar: «¿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 proporciona la dirección de memoria de la variable age. Después 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 normales y los punteros. Sin él, no podrías indicar a un puntero a qué variable debe 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 ejecuciones del programa, pero el formato y las etiquetas deben coincidir exactamente con lo mostrado arriba. [address] es un marcador de posición para la dirección impresa: no imprimas los corchetes.
Pruébalo tú mismo
#include <stdio.h>
int main() {
// TODO: Escribe tu código aquí
// 1. Declara e inicializa las variables
// 2. Declara los punteros
// 3. Usa el operador de dirección para asignar las direcciones
// 4. Imprime 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 Lógica y Flujo
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 cadenasPractica por tu cuenta: Compilador de C online