AnyCompiler

Pointers

Um pointer é uma variável que guarda um endereço de memória. &x te dá o endereço de x; int *p declara p como um pointer para um int; *p desreferencia p, lendo (ou escrevendo) o valor para o qual ele aponta.

#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 não mudou p em si — mudou x, a variável para a qual p aponta. Esse é o mecanismo que todas as outras linguagens deste site escondem atrás de references, borrowing, ou object handles: C te dá diretamente, sem restrições sobre quando ou como você o usa.

A seguir: pointers e arrays — como a indexação de arrays e a aritmética de pointers são secretamente a mesma operação.

Practice exercise

Declare uma variável x fixada em 10. Declare um pointer p para x, use-o para fixar x em 99 através do pointer, depois imprima x.