Un puntatore é una variabile che contiene un indirizzo di memoria. L'impiego dei puntatori è una delle caratteristiche per così dire "triviali" del C. Comprendere bene l'uso dei puntatori è assolutamente necessario, anche per scrivere programmi semplici e che, scritti in linguaggi più amichevoli, appaiono formalmente non farne uso. Questo in quanto il C non tenta in alcun modo di nascondere l'uso a basso livello della memoria; ciò ha il risultato di rendere la vita più difficile al programmatore, ma lo rende anche più libero, e necessariamente consapevole di quello che sta facendo.