Menu
Coddy logo textTech

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 pointers, aprendamos cómo crearlos. Declarar una variable pointer sigue una sintaxis específica que le indica al compilador a qué tipo de datos apuntará el pointer.

La sintaxis básica para declarar un pointer 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 float

El asterisco (*) es lo que hace que esta sea una declaración de puntero. Le dice 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".

Es una buena práctica inicializar pointers a NULL si aún no están apuntando a una address de memoria válida. Esto evita que apunten a ubicaciones de memoria aleatorias: int *ptr = NULL;

Al imprimir direcciones de pointer usando printf, usa el especificador de formato %p. A menudo se recomienda moldear el pointer a (void *) para garantizar la compatibilidad y el formato correcto: printf("%p", (void *)ptr);

Observa que el tipo de datos antes del asterisco especifica qué tipo de datos apuntará el pointer. Esto es importante porque los diferentes tipos de datos ocupan distintas cantidades de espacio en memoria, y el compilador necesita saber esta información para una gestión de memoria adecuada.

challenge icon

Desafío

Fácil
Escribe un programa en C que demuestre la sintaxis correcta para la declaración de punteros. Tu programa debe:
  1. Declarar un puntero a un entero llamado int_ptr, inicializado en NULL
  2. Declarar un puntero a un carácter llamado char_ptr, inicializado en NULL
  3. Declarar un puntero a un float llamado float_ptr, inicializado en NULL
  4. Imprimir las direcciones de memoria almacenadas en cada puntero usando printf con el especificador de formato %p. Al imprimir, convierte (cast) el puntero a (void*) para asegurar el formato correcto, por ejemplo: printf("Label: %p\n", (void*)ptr);

Tu salida debe mostrar las tres direcciones de puntero 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 como se muestra arriba.

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;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow