Menu
CoddyTech

Membandingkan pointer

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

Kamu telah mempelajari cara menelusuri array menggunakan aritmetika pointer. Sekarang kamu akan mengetahui bahwa pointer juga dapat dibandingkan menggunakan operator relasional yang sama seperti yang kamu gunakan dengan variabel biasa: ==, !=, <, dan >.

Saat kamu membandingkan dua pointer, kamu membandingkan alamat memorinya. Ini sangat berguna ketika kedua pointer menunjuk ke elemen dalam array yang sama, karena kamu dapat menentukan posisi relatifnya di memori.

int numbers[5] = {10, 20, 30, 40, 50};
int *start = numbers;        // Menunjuk ke elemen pertama
int *end = numbers + 4;      // Menunjuk ke elemen terakhir

if (start < end) {
    printf("start comes before end in memory");
}

Perbandingan pointer menjadi sangat berguna dalam kondisi perulangan. Alih-alih menggunakan variabel penghitung, kamu bisa membandingkan posisi pointer saat ini dengan pointer target untuk menentukan kapan perulangan harus berhenti. Cara ini menghasilkan kode yang elegan dan efisien untuk menelusuri array.

Inti pentingnya adalah ptr1 < ptr2 memberi tahu kamu bahwa ptr1 menunjuk ke elemen yang muncul lebih awal dalam array daripada elemen yang ditunjuk oleh ptr2. Hubungan ini membuat perbandingan pointer cocok digunakan untuk mengendalikan perulangan yang memproses array secara berurutan.

challenge icon

Tantangan

Mudah

Tulis program C yang menggunakan perbandingan pointer untuk menelusuri array dan menemukan elemen dalam rentang tertentu. Programmu harus:

  1. Mendeklarasikan array integer bernama scores dengan 8 elemen dan menginisialisasinya dengan nilai {45, 78, 92, 63, 87, 34, 91, 56}
  2. Mendeklarasikan dua pointer ke integer: start_ptr dan end_ptr
  3. Mengatur start_ptr agar menunjuk ke elemen pertama array
  4. Mengatur end_ptr agar menunjuk ke elemen terakhir array menggunakan aritmetika pointer
  5. Mendeklarasikan pointer bernama current_ptr dan menginisialisasinya agar menunjuk ke elemen pertama
  6. Menggunakan while loop dengan perbandingan pointer (current_ptr <= end_ptr) untuk menelusuri array
  7. Di dalam perulangan:
    • Memeriksa apakah nilai saat ini berada di antara 60 dan 90 (inklusif)
    • Jika nilai berada dalam rentang, mencetak tepat Value [value] is in range
    • Jika nilai tidak berada dalam rentang, mencetak tepat Value [value] is out of range
    • Menaikkan current_ptr untuk berpindah ke elemen berikutnya
  8. Setelah perulangan, menggunakan perbandingan pointer untuk memastikan bahwa current_ptr sekarang berada setelah akhir array dengan memeriksa apakah current_ptr > end_ptr
  9. Jika kondisi benar, mencetak tepat Traversal complete

Outputmu harus menampilkan hasil dalam format berikut:

Value 45 is out of range
Value 78 is in range
Value 92 is out of range
Value 63 is in range
Value 87 is in range
Value 34 is out of range
Value 91 is out of range
Value 56 is out of range
Traversal complete

Tantangan ini menguji pemahamanmu tentang operator perbandingan pointer dalam kondisi perulangan, penggunaan aritmetika pointer untuk mengatur pointer batas, dan cara perbandingan pointer dapat mengendalikan penelusuran array dengan lebih elegan daripada perulangan tradisional yang menggunakan penghitung.

Coba sendiri

#include <stdio.h>

int main() {
    // TODO: Tulis kodemu di bawah ini
    
    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