Wskaźnikiem w BCPL nazywany jest adres słowa w pamięci. Pozyskać go można z użyciem jednoargumentowego operatora @. Dostęp pośredni umożliwia operator !. Poniższy przykładowy kod pobiera adres zmiennej A i umieszcza go w B, a następnie zapisuje do A wartość 5 (pośrednio, poprzez wskaźnik):LET A, B = 0, 0 B := @A !B := 5Następujące po sobie komórki pamięci posiadają adresy różniące się o 1.

Zmienne statyczne W przeciwieństwie do zmiennych dynamicznych, statyczne istnieją przez cały czas wykonywania programu. Ich wartości są inicjalizowane w momencie uruchomienia i pozostają zachowane po wyjściu z zakresu widoczności danej zmiennej. Wprowadza je deklaracja STATIC $( ... $). Zmienne statyczne nie są widoczne dla innych modułów programu.

Zmienne globalne Zmienne globalne w BCPL deklaruje się za pośrednictwem tzw. wektora globalnego. Jest on przechowywany w stałym miejscu pamięci operacyjnej i współdzielony ze wszystkimi, oddzielnie kompilowanymi, modułami programu. Każdej zmiennej globalnej przypisuje się lokalizację w wektorze za pomocą składni GLOBAL $( ... $). Część lokalizacji pamięci jest wykorzystywana przez implementację, dlatego aby uniknąć konfliktów, indeksy komórek pamięci w kodzie były typowo niemniejsze od 100.