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.
main.c
Teste você mesmo →#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.