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.
Tantangan
MudahTulis program C yang menggunakan perbandingan pointer untuk menelusuri array dan menemukan elemen dalam rentang tertentu. Programmu harus:
- Mendeklarasikan array integer bernama
scoresdengan 8 elemen dan menginisialisasinya dengan nilai {45, 78, 92, 63, 87, 34, 91, 56} - Mendeklarasikan dua pointer ke integer:
start_ptrdanend_ptr - Mengatur
start_ptragar menunjuk ke elemen pertama array - Mengatur
end_ptragar menunjuk ke elemen terakhir array menggunakan aritmetika pointer - Mendeklarasikan pointer bernama
current_ptrdan menginisialisasinya agar menunjuk ke elemen pertama - Menggunakan while loop dengan perbandingan pointer (
current_ptr <= end_ptr) untuk menelusuri array - 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_ptruntuk berpindah ke elemen berikutnya
- Setelah perulangan, menggunakan perbandingan pointer untuk memastikan bahwa
current_ptrsekarang berada setelah akhir array dengan memeriksa apakahcurrent_ptr > end_ptr - 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 completeTantangan 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;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online