Menu
CoddyTech

Elemen array dan pointer

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 8 dari 63.

Setelah memahami cara kerja nama array sebagai pointer, kamu dapat menggunakan pengetahuan ini untuk mengakses elemen array dengan cara yang sama sekali berbeda. Alih-alih menggunakan notasi tanda kurung siku yang sudah dikenal seperti array[i], kamu dapat menggunakan notasi pointer untuk mendapatkan hasil yang sama.

Hal penting yang perlu dipahami adalah array[i] sepenuhnya setara dengan *(array + i). Saat kamu menulis array + i, kamu memberi tahu C untuk bergerak maju sebanyak i posisi dari awal array. Operator dereferensi * kemudian mengambil nilai di lokasi tersebut.

int numbers[5] = {10, 20, 30, 40, 50};
// Kedua baris ini melakukan hal yang persis sama:
printf("%d", numbers[2]);    // Mencetak 30
printf("%d", *(numbers + 2)); // Juga mencetak 30

Notasi pointer ini berfungsi karena C secara otomatis menghitung alamat memori yang tepat berdasarkan ukuran tipe data. Saat kamu menambahkan 2 ke pointer array integer, C bergerak maju sebanyak 2 × sizeof(int) byte, tepat sampai ke elemen ketiga.

Memahami kesetaraan ini memberimu fleksibilitas dalam bekerja dengan array dan mempersiapkanmu untuk teknik pointer yang lebih lanjut, yang akan kamu temui seiring melanjutkan belajar C.

challenge icon

Tantangan

Mudah

Tulis program C yang menunjukkan cara mengakses elemen array menggunakan notasi pointer, bukan pengindeksan array tradisional. Programmu harus:

  1. Mendeklarasikan array integer bernama values dengan 6 elemen dan menginisialisasinya dengan nilai {5, 15, 25, 35, 45, 55}
  2. Menggunakan for loop untuk menelusuri semua elemen array
  3. Di dalam perulangan, menggunakan notasi pointer *(values + i) untuk mengakses setiap elemen (jangan gunakan notasi tanda kurung siku seperti values[i])
  4. Mencetak setiap elemen menggunakan metode akses notasi pointer
  5. Setelah perulangan, menunjukkan kesetaraannya dengan mencetak elemen ketiga (indeks 2) menggunakan kedua metode:
    • Pertama, menggunakan notasi pointer: *(values + 2)
    • Lalu, menggunakan notasi array tradisional: values[2]

Outputmu harus menampilkan hasil dalam format berikut:

Element 0: 5
Element 1: 15
Element 2: 25
Element 3: 35
Element 4: 45
Element 5: 55
Third element via pointer: 25
Third element via array: 25

Tantangan ini menguji pemahamanmu tentang kesetaraan antara array[i] dan *(array + i), serta menunjukkan cara aritmetika pointer memungkinkanmu mengakses elemen array menggunakan perhitungan alamat memori, bukan pengindeksan tradisional.

Coba sendiri

#include <stdio.h>

int main() {
    // TODO: Tulis kodemu di sini
    // Deklarasikan dan inisialisasi array 'values' dengan 6 elemen
    // Gunakan for loop untuk mencetak setiap elemen dengan notasi pointer *(values + i)
    // Setelah perulangan, cetak elemen ketiga dengan notasi pointer dan notasi array
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online