Cara Memakai Array dalam Bahasa C untuk Pemula

Laptop menampilkan kode bahasa C dengan catatan perulangan di buku tulis

Array dalam bahasa C menyimpan sekumpulan nilai bertipe sama di bawah satu nama variabel. Kalau kamu butuh menyimpan 100 nilai ujian, membuat nilai1 sampai nilai100 jelas bukan pilihan. Dengan array, kamu cukup menulis satu nama lalu mengakses isinya lewat nomor indeks.

Panduan cara memakai array dalam bahasa C ini mencakup deklarasi, pengisian nilai, pembacaan dengan perulangan, sampai kesalahan yang paling sering bikin program pemula error.

Deklarasi dan Inisialisasi Array

Bentuk dasarnya seperti ini:

tipe_data nama_array[ukuran];

Contoh nyata untuk menyimpan 5 nilai:

int nilai[5];

Baris itu memesan lima slot bilangan bulat di memori. Kamu juga bisa langsung mengisinya saat deklarasi:

int nilai[5] = {80, 75, 90, 85, 70};

Kalau semua nilai awal sama, ada cara singkat:

int nilai[5] = {0};

Perhatikan bahwa angka di dalam kurung siku adalah jumlah elemen, bukan indeks terakhir. Pada array di atas, elemen valid berjumlah 5, dengan indeks 0 sampai 4.

Indeks Array Dimulai dari Nol

Ini bagian yang paling sering bikin bingung pemula. Elemen pertama array punya indeks 0, bukan 1.

int nilai[3] = {10, 20, 30};

nilai[0]; // 10
nilai[1]; // 20
nilai[2]; // 30

Kalau kamu menulis nilai[3], itu di luar batas array. Bahasa C tidak akan menghentikanmu dengan pesan error yang jelas. Program bisa jalan seolah normal, tapi isi memori di sekitarnya rusak dan hasilnya jadi tidak bisa diprediksi. Kesalahan seperti ini sering muncul sebagai crash yang sulit dilacak.

Mengisi dan Membaca Array dengan Perulangan

Menulis satu per satu untuk array berukuran besar tidak praktis. Perulangan for adalah pasangan alami array.

#include <stdio.h>

int main(void) {
    int nilai[5];

    for (int i = 0; i < 5; i++) {
        printf("Nilai ke-%d: ", i + 1);
        scanf("%d", &nilai[i]);
    }

    for (int i = 0; i < 5; i++) {
        printf("nilai[%d] = %dn", i, nilai[i]);
    }

    return 0;
}

Pola i < 5 penting. Kalau diganti i <= 5, perulangan akan menyentuh indeks 5 yang tidak ada. Selalu bandingkan batas dengan tanda kurang dari, bukan kurang dari atau sama dengan, saat mengakses array berukuran 5.

Menghitung array bisa juga dilakukan dalam satu perulangan, misalnya menjumlahkan seluruh nilai:

int total = 0;

for (int i = 0; i < 5; i++) {
    total += nilai[i];
}

float rata_rata = (float) total / 5;

Array dan String: Hubungan yang Perlu Dipahami

String di bahasa C sebenarnya adalah array bertipe char yang diakhiri karakter khusus ''.

char nama[20] = "Budi";

Array itu menampung lima karakter: ‘B’, ‘u’, ‘d’, ‘i’, dan ‘’. Karena itu, saat menerima input dari pengguna, sisakan satu slot untuk penutup string. Kalau kamu membuat char nama[5] untuk nama empat huruf, ukurannya masih cukup. Tapi kalau namanya lima huruf, kamu butuh ukuran minimal enam.

Banyak operasi string memerlukan pointer di balik layar. Kalau konsep itu masih mengganjal, mulai dari cara menggunakan pointer pada bahasa C untuk pemula, karena array dan pointer saling berkaitan erat saat dipakai sebagai argumen fungsi.

Array Dua Dimensi untuk Data Berbentuk Tabel

Kalau kamu perlu menyimpan data baris dan kolom, misalnya nilai tiga siswa untuk empat mata pelajaran, gunakan array dua dimensi.

int nilai[3][4] = {
    {80, 75, 90, 85},
    {70, 88, 92, 78},
    {95, 80, 85, 90}
};

Baris pertama menunjukkan jumlah baris, angka kedua jumlah kolom. Mengaksesnya dengan nilai[1][2], yang berarti baris indeks 1 dan kolom indeks 2.

for (int baris = 0; baris < 3; baris++) {
    for (int kolom = 0; kolom < 4; kolom++) {
        printf("%d ", nilai[baris][kolom]);
    }
    printf("n");
}

Perulangan bersarang seperti ini jadi cara standar membaca data tabel. Perhatikan bahwa kamu perlu dua variabel penghitung agar tiap posisi terlewati tepat sekali.

Mengirim Array ke Fungsi

Saat dikirim ke fungsi, array tidak disalin. Yang dikirim adalah alamat elemen pertamanya, sehingga perubahan di dalam fungsi ikut mengubah array asli.

void tampilkan(int arr[], int ukuran) {
    for (int i = 0; i < ukuran; i++) {
        printf("%d ", arr[i]);
    }
    printf("n");
}

Karena fungsi tidak tahu panjang array, ukuran harus dikirim terpisah. Ini alasan hampir semua fungsi pengolah array di bahasa C punya parameter ukuran.

Kesalahan Umum Saat Memakai Array

Beberapa hal berikut paling sering muncul dan bisa dihindari kalau kamu tahu polanya.

  • Keluar batas indeks. Menulis arr[10] pada array berukuran 10. Indeks valid hanya 0 sampai 9.
  • Lupa ukuran string. Mengisi nama lima huruf ke char nama[5] sehingga penutup string hilang.
  • Mengira array bisa disalin dengan tanda sama dengan. arr2 = arr1 tidak menyalin isi. Kamu perlu perulangan atau fungsi seperti memcpy.
  • Pakai variabel untuk ukuran. Bahasa C versi lama mewajibkan ukuran array berupa konstanta saat deklarasi.
  • Lupa menginisialisasi. Array lokal tanpa inisialisasi berisi nilai acak dari memori.

Kalau kamu sudah nyaman dengan array satu dimensi, langkah berikutnya yang masuk akal adalah menggabungkan array dengan struktur data buatan sendiri. Cara menggunakan struct dalam bahasa C membahas bagaimana beberapa array dengan tipe berbeda bisa dikelompokkan jadi satu unit.

Ringkasan

Array menyimpan banyak nilai bertipe sama dalam satu nama, dengan indeks mulai dari nol. Deklarasi butuh tipe data dan ukuran, pengisian paling rapi lewat perulangan for, dan pengiriman ke fungsi hanya mengirim alamat sehingga perlu parameter ukuran terpisah. Jaga batas indeks dan sisakan ruang untuk penutup string, lalu sebagian besar error array bisa kamu hindari.

Pertanyaan yang Sering Diajukan

Apakah ukuran array bisa diubah setelah dideklarasikan?

Tidak. Ukuran array di bahasa C tetap sejak deklarasi. Kalau butuh struktur yang ukurannya bisa bertambah, gunakan alokasi memori dinamis dengan malloc atau pilih struktur data lain yang sesuai kebutuhan.

Apa bedanya array dan pointer di bahasa C?

Nama array bisa merosot jadi pointer ke elemen pertamanya saat dipakai di ekspresi, tapi array dan pointer bukan hal yang sama. Array punya blok memori tetap, sedangkan pointer adalah variabel yang menyimpan alamat dan bisa diarahkan ke lokasi lain.

Bagaimana cara menyalin isi satu array ke array lain?

Gunakan perulangan untuk menyalin elemen satu per satu, atau fungsi memcpy dari string.h kalau ukuran dan tipe datanya sudah pasti cocok. Tanda sama dengan tidak akan menyalin isi array.