Menu
Coddy logo textTech

Declaración de punteros

Parte de la sección Lógica y Flujo 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 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 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 los punteros a NULL si todavía no apuntan a una dirección 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 a qué tipo de datos apuntará el puntero. Esto es importante porque los distintos tipos de datos ocupan diferentes cantidades de espacio en la memoria, y el compilador necesita conocer esta información para gestionar correctamente la memoria.

challenge icon

Desafío

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

Tu salida debe mostrar las tres direcciones de los punteros con 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 los mostrados 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 Lógica y Flujo

Practica por tu cuenta: Compilador de C online