Saat pertama belajar menulis program, hal paling awal yang Anda kenal biasanya adalah variabel — satu nama untuk satu nilai. Menyimpan nilai ujian seorang siswa cukup dengan nilai = 85, dan selama datanya sedikit cara ini memadai.
Persoalannya muncul begitu datanya berulang. Mencatat nilai satu kelas berisi 36 siswa berarti membuat 36 nama variabel. Menghitung rata-ratanya berarti menulis 36 penjumlahan manual, dan satu saja yang terlewat, hasilnya salah tanpa pesan error. Array adalah jalan keluar untuk persoalan ini: satu nama variabel yang menampung banyak nilai bernomor sekaligus.
Array Adalah Sekumpulan Data Bertipe Sama dalam Satu Nama
Array adalah sekumpulan data bertipe sama yang disimpan di bawah satu nama variabel dan diakses lewat nomor urut bernama indeks. Pengertian array dalam pemrograman selalu bertumpu pada dua hal itu: data yang dikumpulkan bersama, dan nomor untuk mengambilnya kembali. Secara mendasar, array dapat diartikan sebagai satu wadah berisi banyak kotak sejenis yang masing-masing diberi nomor. Itulah yang dimaksud dengan array di hampir semua bahasa pemrograman.
Nama lain dari array dalam bahasa Indonesia adalah larik. Istilah inilah yang dipakai buku Informatika untuk SMA/MA Kelas XI terbitan Kemendikbudristek pada sub-bab "Larik (Array)".
Tiga istilah berikut perlu Anda kunci sejak awal:
- Elemen: setiap nilai yang tersimpan di dalam array. Array berisi 36 nilai ujian berarti punya 36 elemen.
- Indeks: nomor urut yang menunjuk posisi sebuah elemen. Hampir semua bahasa modern memulainya dari 0, bukan 1.
- Panjang: jumlah elemen yang ditampung. Indeks terakhir selalu bernilai panjang dikurangi satu.
Cara paling mudah membayangkannya adalah deretan kursi bioskop bernomor. Saat memegang tiket bernomor 47, Anda berjalan langsung ke kursi itu tanpa melewati 46 kursi sebelumnya. Array bekerja dengan cara yang sama.

Perlu diperhatikan bahwa array bukan tipe data tunggal seperti integer (bilangan bulat) atau string (teks). Tipe data array adalah tipe majemuk yang membungkus banyak nilai sejenis menjadi satu kesatuan. Karena itu deklarasinya menyebut tipe isinya dan, pada banyak bahasa, jumlah yang ditampung.
Dilihat dari sisi penataan data, struktur data array termasuk yang paling sederhana di kelompok struktur data linear. Elemennya berbaris dalam satu jalur, sehingga dari satu elemen Anda hanya bisa bergerak maju atau mundur. Materi larik masuk kurikulum Informatika jenjang SMA.
Kenapa Indeks Array Dimulai dari Nol, Bukan Satu
Jawabannya bukan kesepakatan yang harus dihafal. Indeks nol lahir dari cara komputer menghitung alamat di memori.
Elemen array disimpan berurutan rapat dengan ukuran tiap elemen yang seragam. Program tidak mencari elemen yang dibutuhkan, melainkan menghitung letaknya:
alamat = alamat_awal + (indeks × ukuran)Misalkan array berisi lima bilangan bulat berukuran 4 byte, dan blok memorinya dimulai di alamat 1000. Elemen indeks 0 berada di 1000 + (0 × 4) = 1000, tepat di titik awal. Elemen indeks 3 berada di 1000 + (3 × 4) = 1012. Perkaliannya bersih karena indeks pertama bernilai nol. Seandainya penomoran dimulai dari 1, setiap perhitungan harus dikoreksi dengan pengurangan satu.

Standar bahasa C menuliskan hubungan ini secara harfiah. Pada ISO/IEC 9899:2011 §6.5.2.1, penulisan E1[E2] didefinisikan identik dengan (*((E1)+(E2))), dihitung mulai dari nol. Tanda kurung siku yang Anda tulis setiap hari sebenarnya adalah penjumlahan alamat yang disamarkan.
Alasan kedua adalah keterbacaan. Dalam catatan EWD831 bertanggal 11 Agustus 1982, Edsger Dijkstra menyimpulkan bahwa rentang paling rapi ditulis dengan mengikutsertakan batas bawah dan mengecualikan batas atas. Untuk array sepanjang N, bentuknya menjadi 0 ≤ i < N, sehingga panjangnya terbaca langsung.
Konsekuensi praktisnya satu: indeks terakhir sebuah array selalu panjang dikurangi satu. Array dengan 36 elemen punya indeks 0 sampai 35, dan indeks 36 tidak pernah ada.
Dari cara penyimpanan inilah lahir ciri utama sekaligus karakteristik array yang sering ditanyakan. Elemennya bertipe sama sehingga ukuran tiap kotak seragam, dan letaknya rapat berurutan di satu blok memori. Setiap elemen pun dapat dicapai langsung lewat indeks, tanpa menyusuri elemen sebelumnya.
Letak yang rapat juga memberi keuntungan yang tidak terlihat di kode. Prosesor mengambil data dari memori dalam potongan blok, lalu menyimpannya di cache. Membaca satu elemen sering sekaligus menarik tetangganya, sehingga penelusuran berurutan terasa lebih cepat.
Tiga Jenis Array Menurut Jumlah Dimensinya
Jenis array paling umum dibedakan dari berapa banyak nomor yang dibutuhkan untuk menunjuk satu elemen.

Array Satu Dimensi: Deret Tunggal Bernomor
Array satu dimensi, sering ditulis array 1 dimensi, adalah bentuk paling dasar: satu baris elemen yang ditunjuk dengan satu indeks. Daftar nilai ujian, nama bulan, atau harga barang di keranjang belanja memakai bentuk ini, dan inilah yang paling sering Anda temui.
Array Dua Dimensi: Baris dan Kolom
Array dua dimensi menyusun elemen dalam baris dan kolom, seperti matriks di pelajaran matematika. Menunjuk satu elemen membutuhkan dua nomor, setara dengan menyebut "baris C kursi 12" di bioskop. Bentuk ini dipakai saat datanya berpasangan dua arah, misalnya jadwal pelajaran, papan catur, atau tabel jarak antarkota.
Satu hal jarang disadari pemula: array dua dimensi tetap disimpan sebagai satu deret lurus di memori. Standar C menyebut susunannya row-major order, yaitu subskrip terakhir berubah paling cepat. Seluruh isi baris pertama tersimpan lebih dulu, baru disusul baris kedua. Karena itu menelusurinya per baris lebih ramah cache daripada per kolom.
Array Multidimensi: Tiga Dimensi ke Atas
Array multidimensi menambah sumbu lagi. Array tiga dimensi dapat dibayangkan sebagai tumpukan beberapa tabel, dan menunjuk satu elemen membutuhkan tiga nomor. Contohnya gambar digital berwarna, yang tersimpan sebagai tinggi × lebar × tiga kanal warna.
Secara teknis tidak ada batas jumlah dimensi. Praktiknya lain: begitu melewati tiga dimensi, kode menjadi sulit dibaca dan sulit diperiksa. Untuk kebanyakan kebutuhan, satu atau dua dimensi sudah cukup.
Array Statis dan Array Dinamis: Beda yang Sering Terlewat
Pembagian ini menentukan apakah panjang array bisa berubah setelah dibuat, dan pengaruhnya lebih besar daripada pembagian dimensi.
Array statis mengunci panjangnya saat dibuat. Spesifikasi bahasa Java menyatakannya tanpa ruang tafsir: begitu objek array tercipta, panjangnya tidak pernah berubah. Array berukuran lain berarti array baru.
Array dinamis tampak bisa tumbuh sendiri, padahal mekanismenya selalu sama. Ia menyiapkan ruang lebih dari yang sedang dipakai, lalu menyalin seluruh isinya ke blok memori baru ketika ruang itu habis. Penambahan satu elemen biasanya sangat murah, tetapi sesekali ada penambahan yang diam-diam menyalin semuanya.

Kode sumber bahasa-bahasa populer memperlihatkan strategi yang berbeda:
| Implementasi | Kapasitas awal | Pola pertumbuhan |
|---|---|---|
list pada CPython | 0 | 0, 4, 8, 16, 24, 32, 40, 52, 64, 76, … (faktor sekitar 9/8) |
ArrayList pada Java | 10 | kapasitas lama ditambah setengahnya (faktor 1,5) |
std::vector pada C++ | 0 | tidak ditentukan standar, hanya dijamin murah secara rata-rata |
Istilah teknis untuk jaminan "murah secara rata-rata" adalah amortized. Biaya penyalinan sesekali dibagi rata ke seluruh penambahan, sehingga rata-ratanya tetap konstan.
Pelajaran praktisnya satu. Kalau Anda sudah tahu akan menyimpan 10.000 elemen, alokasikan ruangnya sekali di awal. Membiarkan array tumbuh dari nol berarti melewati belasan penyalinan yang sebenarnya dapat dihindari.
Operasi Array: Mana yang Murah dan Mana yang Mahal
Fungsi array di sebuah program ditentukan oleh operasi yang bisa dijalankan padanya. Memahaminya bukan sekadar tahu apa saja operasi itu, melainkan tahu mana yang biayanya ringan dan mana yang berat. Biaya ini ditulis dengan notasi Big O, cara menyatakan bagaimana waktu kerja bertambah seiring membesarnya data. O(1) berarti waktunya tetap berapa pun jumlah datanya, sedangkan O(n) naik sebanding dengan jumlah elemen.
| Operasi | Biaya | Alasan |
|---|---|---|
| Membaca elemen lewat indeks | O(1) | alamatnya dihitung langsung dengan satu perkalian |
| Mengubah nilai sebuah elemen | O(1) | posisinya sudah diketahui, isinya ditimpa di tempat |
| Menelusuri seluruh isi | O(n) | setiap elemen disentuh tepat sekali |
| Mencari nilai tanpa tahu posisinya | O(n) | elemen diperiksa satu per satu sampai ketemu |
| Mencari nilai pada array yang sudah urut | O(log n) | pencarian biner membelah rentang di tiap langkah |
| Menyisipkan atau menghapus di tengah | O(n) | semua elemen sesudahnya harus digeser satu posisi |
Baris terakhir adalah sumber kelemahan array yang paling sering ditanyakan. Bayangkan array berisi 1.000 elemen dan Anda menyisipkan nilai baru di posisi ke-3. Ke-997 elemen sesudahnya harus bergeser satu langkah ke kanan. Menghapus elemen di posisi yang sama menimbulkan pekerjaan sebanyak itu juga.

Sebaliknya, menambah dan menghapus di ujung akhir jauh lebih murah karena tidak ada yang perlu digeser. Inilah alasan banyak algoritma pengurutan dan pencarian dirancang untuk bekerja di atas array.
Contoh Array di Lima Bahasa dan Bedanya
Kata "array" terdengar seragam, padahal isinya berbeda cukup jauh antarbahasa. Deklarasi array, batas panjangnya, dan perlakuan terhadap indeks tidak sama, dan perbedaan inilah yang paling membingungkan saat Anda berpindah bahasa.
Array di Bahasa C
C menyediakan array dalam bentuk paling mentah, yaitu blok memori berukuran tetap tanpa pemeriksaan batas.
int nilai[5] = {85, 90, 78, 92, 88};
printf("%d\n", nilai[2]); /* 78 */Karena nilai[2] sebenarnya penjumlahan alamat, C tidak menghentikan Anda saat menulis nilai[9]. Program membaca apa pun yang kebetulan tersimpan di alamat itu, lalu berjalan terus seolah tidak terjadi apa-apa.
Array di Java
Java memakai array berukuran tetap, tetapi memeriksa setiap akses saat program berjalan.
int[] nilai = {85, 90, 78, 92, 88};
System.out.println(nilai.length); // 5
// indeks 5 tidak ada:
System.out.println(nilai[5]);
// ArrayIndexOutOfBoundsExceptionPanjangnya dibaca lewat field length, bukan lewat metode. Panjang itu bukan bagian dari tipenya, sehingga satu variabel int[] boleh menunjuk array 5 elemen hari ini dan 500 elemen besok. Untuk daftar yang panjangnya berubah-ubah, pemakai Java umumnya memilih ArrayList.
Array di Python
Python tidak punya tipe array bawaan seperti C atau Java. Yang dipakai hampir semua orang adalah list, yang panjangnya bisa berubah dan isinya boleh bercampur tipe.
# ini list, bukan array
nilai = [85, 90, 78, 92, 88]
print(nilai[2]) # 78
# array bertipe tunggal
from array import array
suhu = array('d', [31.5, 30.2, 29.8])Array sungguhan tersedia lewat modul array di pustaka standar. Tipe isinya dikunci saat pembuatan lewat kode huruf, misalnya 'i' untuk bilangan bulat dan 'd' untuk pecahan 8 byte. Bentuk ini lebih padat di memori, tetapi jarang dipakai di luar pekerjaan numerik.
Array di JavaScript
Array JavaScript panjangnya bisa berubah dan isinya boleh bercampur tipe, dengan satu kejutan di baliknya.
const nilai = [85, 90, "tidak hadir", 92, 88];
console.log(nilai.length); // 5
console.log(nilai["02"]); // undefinedIndeks array di JavaScript sebenarnya diperlakukan sebagai teks. Hanya "2" yang dihitung sebagai indeks sungguhan, sedangkan "02" menjadi properti biasa yang terlewat saat array ditelusuri. Panjang maksimalnya dibatasi 2³² − 1 elemen.
Array di PHP
Inilah perbedaan paling tajam. Dokumentasi resminya menyatakan terang-terangan bahwa array di PHP sebenarnya ordered map, yaitu tipe yang memasangkan nilai dengan kunci.
$nilai = [85, 90, 78];
// kunci teks, tetap disebut array
$siswa = ["andi" => 85, "budi" => 90];
var_dump($nilai["0"] === $nilai[0]);
// bool(true)Kuncinya hanya boleh bilangan bulat atau teks, dan teks berbentuk angka desimal sah dikonversi menjadi bilangan bulat — "8" menjadi 8, sementara "08" tetap teks.
Kesimpulannya bukan bahwa salah satu bahasa keliru. Yang membuat sesuatu disebut array bukan bentuk sintaksnya, melainkan perilakunya — sehimpunan data yang disimpan bersama dan diambil kembali lewat indeks. Format pertukaran data seperti JSON memakai definisi longgar yang sama.
Kelebihan Array Dibanding Variabel Terpisah
- Akses langsung dengan biaya tetap: elemen di posisi mana pun dicapai lewat satu perhitungan alamat. Mengambil elemen pertama dan elemen ke-satu-juta memakan waktu yang sama.
- Hemat memori: array hanya menyimpan datanya sendiri, tanpa penunjuk tambahan untuk menghubungkan satu elemen ke elemen berikutnya.
- Cepat saat ditelusuri berurutan: letak yang rapat membuat prosesor menarik beberapa elemen sekaligus ke cache.
- Memungkinkan perulangan: inilah keuntungan terbesarnya. Tiga puluh enam variabel tidak dapat dilewati satu perulangan, sedangkan array berisi 36 elemen selesai diproses dengan tiga baris kode.
Kelemahan Array dan Kesalahan yang Sering Terjadi
Ada empat kelemahan yang perlu Anda pertimbangkan sebelum memakai array:
- Panjangnya terkunci pada array statis: ukurannya harus diperkirakan di awal. Terlalu kecil berarti kehabisan tempat, terlalu besar berarti memori terbuang.
- Penyisipan dan penghapusan di tengah mahal: seluruh elemen sesudahnya harus digeser satu posisi.
- Pencarian tetap lambat: tanpa tahu posisinya, nilai harus diperiksa satu per satu.
- Tipe isinya seragam: pada bahasa bertipe ketat, satu array hanya menampung satu jenis data.
Selain itu, ada tiga kesalahan yang hampir selalu dialami pemula.
Salah menghitung batas. Kesalahan ini dikenal sebagai off-by-one (meleset satu langkah), dan penyebab tersering adalah mengira indeks terakhir sama dengan panjang array. Perulangan sampai i <= panjang akan menyentuh satu posisi yang tidak pernah ada.
Mengakses indeks di luar batas. Akibatnya berbeda-beda: C membaca memori sembarangan tanpa peringatan, Java melempar ArrayIndexOutOfBoundsException, dan Python melempar IndexError. Dua yang terakhir justru lebih aman karena kesalahan terlihat seketika, sementara kegagalan senyap pada C menjadi salah satu kasus debugging paling melelahkan.
Membandingkan dua array dengan operator sama dengan. Di banyak bahasa, operator itu membandingkan alamat, bukan isi, sehingga dua array dengan isi identik dapat dinyatakan berbeda.
Kapan Memakai Array dan Kapan Memilih Struktur Lain
Tiga aturan praktis berikut cukup untuk hampir semua keputusan sehari-hari.

Pakai array kalau jumlah elemennya sudah diketahui di awal dan akses utamanya lewat posisi. Untuk daftar puluhan sampai ribuan elemen yang lebih sering dibaca daripada diubah susunannya, array hampir selalu pilihan yang benar.
Pertimbangkan struktur lain kalau penyisipan atau penghapusan di tengah terjadi lebih dari sekitar sepersepuluh seluruh operasi. Pada titik itu biaya penggeseran mulai mendominasi.
Jangan pakai array kalau pencarian selalu lewat nama atau kunci, bukan lewat posisi. Mencari data pelanggan berdasarkan nomor identitas di dalam array berarti memeriksa satu per satu, sementara struktur berbasis kunci menemukannya nyaris seketika.
Perbandingan lengkap pilihan-pilihan lain dapat Anda baca di artikel struktur data.
Kata "Array" di Luar Pemrograman: Excel, Audio, dan Penyimpanan
Di luar dunia kode, array artinya susunan beraturan dari banyak unit sejenis. Arti dasar itu dipakai di beberapa bidang lain.
Table array di Excel. Argumen kedua fungsi VLOOKUP bernama table_array, yaitu rentang sel tempat pencarian dilakukan. Dokumentasi Microsoft menegaskan satu syarat yang sering dilanggar: nilai yang dicari wajib berada di kolom paling kiri rentang tersebut. Penggantinya, XLOOKUP, memisahkan rentang pencarian dari return_array yang berisi hasil, sehingga syarat itu hilang. Google Sheets memakai istilah yang sama, termasuk array formula untuk rumus yang mengolah banyak sel sekaligus.
Microphone array. Susunan beberapa mikrofon dalam satu perangkat, umum pada laptop dan perangkat konferensi. Di Windows namanya sering muncul sebagai "Microphone Array (Realtek Audio)". Selisih waktu datangnya suara ke tiap mikrofon dipakai untuk memperkirakan arah sumbernya, sehingga suara pembicara dapat dikuatkan.
Line array. Susunan speaker yang dijajarkan vertikal pada sistem tata suara panggung, sehingga suara menyebar merata ke penonton di berbagai jarak.
Disk array. Sekumpulan hard disk yang dikelola sebagai satu kesatuan penyimpanan, dan inilah dasar teknologi RAID.
Pertanyaan yang Sering Diajukan
Apa itu array pada C++?
Array pada C++ adalah blok memori berukuran tetap berisi elemen bertipe sama yang diakses lewat indeks mulai dari nol, sama seperti pada C. Untuk daftar yang panjangnya berubah, tersedia std::vector yang tetap menyimpan elemennya berurutan rapat.
Apa itu array pada Python?
Python tidak menyediakan tipe array bawaan. Yang dipakai sehari-hari adalah list, yang panjangnya bisa berubah dan isinya boleh bercampur tipe, sementara array bertipe tunggal tersedia lewat modul array.
Apa kata lain dari array?
Padanan bahasa Indonesianya adalah larik, istilah yang dipakai buku Informatika terbitan Kemendikbudristek. Array juga kerap disebut daftar, deret, atau vektor, sedangkan array dua dimensi umum disebut matriks.
Apa saja contoh array dalam kehidupan sehari-hari?
Deretan kursi bioskop bernomor, kotak surat berjajar di lobi apartemen, papan jadwal kereta, dan kalender satu bulan. Cirinya sama: banyak tempat sejenis berjajar rapi yang dapat dituju langsung lewat nomor atau koordinatnya.
Apa bedanya array dan list?
Istilahnya bergantung pada bahasa. Umumnya array merujuk pada elemen bertipe sama yang tersimpan berurutan rapat dengan panjang tetap, sedangkan list merujuk pada daftar yang panjangnya dapat berubah. Pada Python, list sendiri diimplementasikan sebagai array dinamis.
Indeks array dimulai dari angka berapa?
Dari nol pada hampir semua bahasa modern, termasuk C, C++, Java, Python, JavaScript, PHP, dan Go. Alasannya adalah perhitungan alamat memori yang menjadi bersih saat elemen pertama berjarak nol byte dari titik awal. Fortran dan Lua memulainya dari satu.
Teknik pencarian apa yang hanya bisa dipakai pada array terurut?
Pencarian biner (binary search). Teknik ini membelah rentang pencarian menjadi dua di setiap langkah, dan hanya dapat diterapkan kalau elemen array sudah terurut. Pada array yang belum terurut, satu-satunya cara yang benar adalah memeriksa elemen satu per satu.
Apa itu array dua dimensi?
Array dua dimensi adalah array yang elemennya disusun dalam baris dan kolom, sehingga menunjuk satu elemen membutuhkan dua nomor indeks. Bentuk ini dipakai untuk data berpasangan dua arah seperti tabel jadwal atau matriks jarak antarkota.
Kesimpulan
Kalau harus menjelaskan pengertian array dalam satu kalimat: sekumpulan data bertipe sama yang disimpan di bawah satu nama variabel dan diambil kembali lewat indeks. Dalam bahasa Indonesia istilahnya larik. Indeksnya dimulai dari nol karena letak tiap elemen dihitung sebagai alamat awal ditambah indeks dikali ukuran elemen.
Kekuatan array ada pada akses langsung berbiaya tetap dan letak yang rapat di memori. Kelemahannya muncul saat susunannya sering diubah di tengah, karena setiap penyisipan memaksa elemen sesudahnya bergeser. Untuk daftar berisi puluhan sampai ribuan elemen yang lebih sering dibaca daripada diubah, array masih menjadi pilihan paling sederhana.
Satu hal terakhir: kata "array" tidak berarti persis sama di setiap bahasa. Setelah memahami konsep umumnya, dokumentasi resmi bahasa yang Anda pakai tetap perlu dibaca.
Semoga artikel ini membantu.




