Walaupun array sangat bagus untuk mengimplementasikan random access, tapi sifatnya yang statis menyebabkan tidak array tidak dapat diterapkan pada berbagai aplikasi. Selain itu dalam manajemen memory umumnya array dialokasikan secara fixed, sehingga tidak dapat didealokasi ketika program masih dieksekusi. Artinya ruang memory yang dipakai oleh array yang sudah tidak digunakan lagi, tidak dapat dihapus atau dialokasikan untuk data lain, selama program masih dijalankan.
Untuk memecahkan masalah tersebut, dapat digunakan variabel pointer. Type data pointer bersifat dinamis, variabel akan dialokasikan hanya pada saat dibutuhkan dan setelah tidak dibutuhkan dapat didealokasikan kembali.