Array pointer adalah tipe data array standar yang menyimpan urutan memori yang dialamatkan ke tipe data sebagai lawan untuk menahan tipe skalar lain seperti bilangan bulat atau angka floating point. Dengan menggunakan array pointer, sebuah program dapat memiliki array dari hampir semua tipe data, struktur data, kelas atau bahkan fungsi. Penyortiran array pointer yang efisien juga dimungkinkan sehingga, jika diinginkan, alamat dapat disejajarkan sesuai dengan lokasi fisiknya di memori komputer. Beberapa komplikasi dalam menggunakan array pointer adalah bahwa data dapat dengan mudah rusak dan jenis data yang ditunjuk perlu dikelola secara internal untuk mencegah masalah memory overflow.
Tidak semua bahasa pemrograman memungkinkan array pointer sebagai konsep awalnya dipahami. Bahasa tingkat tinggi yang mengotomatisasi manajemen memori tidak menggunakan pointer dengan cara yang sama seperti bahasa tingkat rendah, meskipun secara teknis array objek kelas dalam bahasa berorientasi objek tingkat tinggi adalah array pointer; meskipun demikian, mereka tidak dapat digunakan atau dimanipulasi dengan cara yang sama. Dalam bahasa tingkat rendah, array sebenarnya akan menyimpan nilai integer yang merupakan alamat langsung dari pointer di tumpukan memori. Di sebagian besar bahasa tingkat tinggi, fungsi ini tidak mungkin, meskipun ada paradigma alternatif.
Salah satu aspek yang membuat array pointer berharga sebagai alat pemrograman adalah pointer dapat mereferensikan semua jenis data yang tersedia. Pointer adalah tipe data itu sendiri, meskipun satu-satunya tujuannya adalah untuk menunjuk ke tipe data lain. Ini berarti array pointer sebenarnya dapat berisi berbagai tipe data dalam array yang sama, meskipun program perlu memiliki mekanisme untuk melacak apa yang dirujuk oleh setiap pointer.
Aspek kuat dari pointer adalah bahwa mereka benar-benar dapat menunjuk ke kode program yang dikompilasi dalam memori. Ini memungkinkan array untuk menunjuk ke fungsi, bukan hanya data. Sebuah array fungsi dapat memungkinkan referensi numerik dinamis kode. Ini dapat berguna ketika memprogram juru bahasa atau jenis perangkat lunak lain yang perlu memanggil fungsi tertentu berdasarkan input yang tidak dapat diprediksi tanpa memerlukan pernyataan kondisional yang besar seperti blok sakelar.
Beberapa masalah yang disajikan oleh array data pointer adalah kemungkinan kehilangan alamat, mencegah memori tersebut dibebaskan nanti, dan kemungkinan alamat dapat rusak melalui operasi yang tidak disengaja seperti penambahan. Upaya untuk mengakses alamat yang salah dapat menyebabkan data yang rusak sedang dibaca atau, dalam kasus ekstrim seperti inisialisasi yang gagal, kesalahan segmentasi yang dapat menyebabkan program berhenti tiba-tiba. Pemrograman yang hati-hati dapat membantu mengurangi kemungkinan kejadian ini.