Declaración de punteros
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 2 de 63.
Ahora que entiendes qué son los punteros, aprendamos cómo crearlos. Declarar una variable de puntero sigue una sintaxis específica que le indica al compilador a qué tipo de datos apuntará el puntero.
La sintaxis básica para declarar un puntero es: data_type *pointer_name;
int *ptr; // Declara un puntero a un entero
char *ch_ptr; // Declara un puntero a un carácter
float *f_ptr; // Declara un puntero a un floatEl asterisco (*) es lo que hace que esta sea una declaración de puntero. Le indica al compilador que esta variable almacenará una dirección de memoria, no el valor de datos real. Cuando declaras int *ptr;, estás diciendo "ptr es un puntero que puede almacenar la dirección de una variable de tipo entero".
Observe que el tipo de dato antes del asterisco especifica a qué tipo de datos apuntará el puntero. Esto es importante porque los diferentes tipos de datos ocupan diferentes cantidades de espacio de memoria, y el compilador necesita conocer esta información para una gestión de memoria adecuada.
Desafío
FácilEscribe un programa en C que demuestre la sintaxis correcta para la declaración de punteros. Tu programa debe:
- Declarar un puntero a un entero llamado
int_ptr - Declarar un puntero a un carácter llamado
char_ptr - Declarar un puntero a un float llamado
float_ptr - Imprimir las direcciones de memoria almacenadas en cada puntero usando
printfcon el especificador de formato%p
Tu salida debe mostrar las tres direcciones de los punteros en el siguiente formato:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Ten en cuenta que las direcciones de memoria reales variarán, pero el formato y las etiquetas deben coincidir exactamente con lo que se muestra arriba.
Hoja de referencia
Para declarar una variable de puntero, use la sintaxis: data_type *pointer_name;
int *ptr; // Declara un puntero a un entero
char *ch_ptr; // Declara un puntero a un carácter
float *f_ptr; // Declara un puntero a un flotanteEl asterisco (*) hace que esta sea una declaración de puntero, indicándole al compilador que esta variable almacenará una dirección de memoria. El tipo de dato antes del asterisco especifica a qué tipo de datos apuntará el puntero.
Use el especificador de formato %p con printf para mostrar direcciones de puntero.
Pruébalo tú mismo
#include <stdio.h>
int main() {
// TODO: Declara tus punteros aquí
// TODO: Imprime las direcciones de los punteros usando el formato requerido
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