AnyCompiler

Pointers

Un pointer es una variable que contiene una dirección de memoria. &x te da la dirección de x; int *p declara p como un pointer a un int; *p desreferencia p, leyendo (o escribiendo) el valor al que apunta.

#include <stdio.h>

int main() {
    int x = 42;
    int *p = &x;
    printf("%d\n", *p);
    *p = 100;
    printf("%d\n", x);
    return 0;
}
Output
42
100

*p = 100 no cambió a p mismo — cambió a x, la variable a la que apunta p. Este es el mecanismo que todos los demás lenguajes de este sitio esconden detrás de references, borrowing, o object handles: C te lo da directamente, sin restricciones sobre cuándo o cómo lo usas.

A continuación: pointers y arrays — cómo la indexación de arrays y la aritmética de pointers son en secreto la misma operación.

Practice exercise

Declara una variable x fijada en 10. Declara un pointer p a x, úsalo para fijar x en 99 a través del pointer, luego imprime x.