Menu
CoddyTech

Aritmetika pointer

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

Kamu telah mempelajari cara mengakses elemen array menggunakan notasi pointer seperti *(array + i). Sekarang kamu akan mempelajari teknik yang lebih canggih: aritmetika pointer, yang memungkinkanmu memindahkan pointer di dalam memori menggunakan operasi penambahan dan pengurangan sederhana.

Saat kamu menaikkan pointer dengan ++ atau menurunkannya dengan --, pointer tidak hanya berpindah satu byte. Sebaliknya, pointer berpindah sejauh ukuran tipe data yang ditunjuknya. Untuk pointer integer, ptr++ bergerak maju sebanyak sizeof(int) byte, tepat menuju integer berikutnya di memori.

int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers;    // Menunjuk ke elemen pertama (10)
ptr++;                 // Sekarang menunjuk ke elemen kedua (20)
ptr++;                 // Sekarang menunjuk ke elemen ketiga (30)

Perhitungan ukuran otomatis ini membuat aritmetika pointer sangat kuat dan praktis. Kamu tidak perlu mengkhawatirkan perhitungan byte, C menangani pengalamatan memori untukmu berdasarkan tipe data pointer.

Aritmetika pointer sangat berguna untuk menelusuri array dalam perulangan. Alih-alih menggunakan indeks array, kamu dapat menambah nilai pointer untuk melewati setiap elemen secara berurutan, sehingga sering kali menghasilkan kode yang lebih efisien.

challenge icon

Tantangan

Mudah

Tulis program C yang menunjukkan aritmetika pointer dengan menggunakan operasi peningkatan pointer untuk menelusuri dan memproses array. Programmu harus:

  1. Mendeklarasikan array integer bernama data dengan 5 elemen dan menginisialisasinya dengan nilai {12, 24, 36, 48, 60}
  2. Mendeklarasikan pointer ke integer bernama ptr dan menginisialisasinya agar menunjuk ke elemen pertama array
  3. Menggunakan for loop yang berjalan 5 kali untuk menelusuri seluruh array hanya dengan aritmetika pointer
  4. Di dalam perulangan:
    • Mencetak nilai saat ini yang ditunjuk oleh ptr menggunakan operator dereferensi
    • Mencetak alamat memori yang tersimpan di ptr menggunakan penentu format %p
    • Meningkatkan pointer menggunakan ptr++ untuk berpindah ke elemen berikutnya
  5. Setelah perulangan, mengatur ulang ptr agar kembali menunjuk ke elemen pertama array
  6. Menggunakan aritmetika pointer untuk mengakses dan mencetak elemen ketiga (indeks 2) secara langsung menggunakan *(ptr + 2)
  7. Menggunakan aritmetika pointer untuk mengakses dan mencetak elemen terakhir (indeks 4) secara langsung menggunakan *(ptr + 4)

Outputmu harus menampilkan hasil dalam format berikut:

Value: 12, Address: [address]
Value: 24, Address: [address]
Value: 36, Address: [address]
Value: 48, Address: [address]
Value: 60, Address: [address]
Third element: 36
Last element: 60

Tantangan ini menguji pemahamanmu tentang bagaimana operasi peningkatan pointer secara otomatis berpindah sejauh ukuran tipe data, dan bagaimana kamu dapat menggunakan aritmetika pointer untuk mengakses elemen array pada offset tertentu dari posisi pointer dasar.

Coba sendiri

#include <stdio.h>

int main() {
    // TODO: Tulis kodemu di sini
    // Deklarasikan dan inisialisasi array 'data' dengan nilai {12, 24, 36, 48, 60}
    // Deklarasikan pointer 'ptr' dan inisialisasi agar menunjuk ke elemen pertama
    // Gunakan for loop dengan aritmetika pointer untuk menelusuri array
    // Cetak setiap nilai dan alamatnya, lalu naikkan pointer
    // Atur ulang pointer dan gunakan aritmetika pointer untuk mengakses elemen tertentu
    
    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