Fungsi dan Array · Pelajaran 7 dari 12

Array

9 menit baca · BelajarCode

Array adalah deretan nilai bertipe sama yang disimpan berdampingan di memori. Ukurannya ditentukan saat dideklarasikan dan tidak bisa berubah.

C
1#include <stdio.h>23int main(void) {4    int nilai[5] = {78, 92, 65, 88, 71};5    int jumlah = 0, tertinggi = nilai[0];6    for (int i = 0; i < 5; i++) {7        jumlah += nilai[i];8        if (nilai[i] > tertinggi) tertinggi = nilai[i];9    }10    printf("Rata-rata: %.2f\n", jumlah / 5.0);11    printf("Tertinggi: %d\n", tertinggi);12    return 0;13}
Keluaran
Rata-rata: 78.80
Tertinggi: 92

jumlah / 5.0 membagi dengan bilangan pecahan, sehingga hasilnya tidak dibulatkan.

C tidak memeriksa batas array

Array berisi 5 elemen punya indeks 0 sampai 4. Mengakses nilai[5] tidak menghasilkan pesan error seperti di Python, melainkan membaca atau menulis memori di luar array. Akibatnya tidak terdefinisi: program bisa terlihat normal, menghasilkan nilai acak, atau berhenti mendadak. Kesalahan ini adalah sumber banyak celah keamanan.

Mengirim array ke fungsi

Saat dikirim ke fungsi, array berubah menjadi pointer ke elemen pertamanya, sehingga fungsi tidak tahu panjangnya. Karena itu panjang array selalu dikirim sebagai parameter terpisah.

C
1#include <stdio.h>23double rata_rata(const int data[], int n) {4    long long total = 0;5    for (int i = 0; i < n; i++) total += data[i];6    return (double)total / n;7}89void kali_dua(int data[], int n) {10    for (int i = 0; i < n; i++) data[i] *= 2;11}1213int main(void) {14    int angka[] = {3, 5, 7, 9};15    int n = sizeof(angka) / sizeof(angka[0]);16    printf("Rata-rata: %.2f\n", rata_rata(angka, n));17    kali_dua(angka, n);18    for (int i = 0; i < n; i++) printf("%d ", angka[i]);19    printf("\n");20    return 0;21}
Keluaran
Rata-rata: 6.00
6 10 14 18
  • sizeof(angka) / sizeof(angka[0]) menghitung banyaknya elemen. Trik ini hanya berlaku di tempat array dideklarasikan.
  • const pada parameter menjanjikan bahwa fungsi tidak mengubah isi array.
  • Berbeda dengan variabel biasa, isi array bisa diubah oleh fungsi, karena yang dikirim adalah alamatnya.

Array dua dimensi

C
1#include <stdio.h>23int main(void) {4    int nilai[3][2] = {{80, 75}, {92, 88}, {70, 85}};5    for (int i = 0; i < 3; i++) {6        printf("Mahasiswa %d: rata-rata %.1f\n", i + 1, (nilai[i][0] + nilai[i][1]) / 2.0);7    }8    return 0;9}
Keluaran
Mahasiswa 1: rata-rata 77.5
Mahasiswa 2: rata-rata 90.0
Mahasiswa 3: rata-rata 77.5

Cek pemahaman

Apa yang terjadi saat program C membaca arr[10] dari array int arr[10]?

Latihan

Membalik array

Tulis fungsi balik(int data[], int n) yang membalik urutan isi array di tempat, tanpa array tambahan. Uji dengan {1, 2, 3, 4, 5, 6}.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler C online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi