Rantai Penunjuk dalam C

Hai teman-teman, para ahli coding masa depan! Hari ini, kita akan melangsungkan sebuah perjalanan menarik melalui dunia magis rantai penunjuk dalam C. Jangan khawatir jika Anda baru belajar programming - saya akan menjadi panduan ramah Anda, dan kita akan mengatasi topik ini secara bertahap. Jadi, ambil keyboard virtual Anda (atau papan ketik), dan mari kita masuk ke dalamnya!

C - Chain of Pointers

Apa Itu Rantai Penunjuk dalam C?

Imaginasi Anda sedang dalam treasure hunt, dan bukannya peta, Anda memiliki sejumlah petunjuk. Setiap petunjuk mengarah ke petunjuk berikutnya, membentuk rantai yang akhirnya mengarah ke harta karun. Itu sebenarnya apa artinya rantai penunjuk dalam C!

Dalam programming C, rantai penunjuk adalah urutan penunjuk tempat setiap penunjuk mengarah ke penunjuk lain, kecuali yang terakhir, biasanya mengarah ke variabel jenis data tertentu.

mari kita mulai dengan contoh sederhana:

int value = 42;
int *ptr1 = &value;
int **ptr2 = &ptr1;
int ***ptr3 = &ptr2;

Dalam kode ini:

  • value adalah harta karun kita (sebuah integer dengan nilai 42).
  • ptr1 adalah penunjuk yang menyimpan alamat value.
  • ptr2 adalah penunjuk ke penunjuk (perhatikan tanda asterisk ganda) yang menyimpan alamat ptr1.
  • ptr3 adalah penunjuk ke penunjuk ke penunjuk (asterisk tiga kali!) yang menyimpan alamat ptr2.

Itu seperti boneka Rusia yang bersarang! ?

Bagaimana Cara Dereferencing Kerja?

Sekarang, mari bicarakan tentang dereferencing. Dereferencing adalah seperti membuka setiap boneka bersarang untuk mendapatkan yang di dalamnya. Dalam rantai penunjuk kita, kita menggunakan asterisk (*) untuk dereferencing.

printf("Value: %d\n", ***ptr3);

Baris ini mungkin terlihat sedikit menakutkan dengan tiga asterisk, tapi mari kitauraikan:

  1. *ptr3 memberikan kita alamat yang disimpan di ptr2
  2. **ptr3 (atau *(*ptr3)) memberikan kita alamat yang disimpan di ptr1
  3. ***ptr3 (atau *(*(*ptr3))) akhirnya memberikan kita nilai value, yaitu 42

Itu seperti mengatakan, "Buka boneka besar, lalu buka boneka menengah di dalamnya, lalu buka boneka kecil di dalam itu untuk menemukan harta karun!"

Rantai Penunjuk Float

mari kita coba ini dengan bilangan desimal:

float pi = 3.14159;
float *fPtr1 = π
float **fPtr2 = &fPtr1;
float ***fPtr3 = &fPtr2;

printf("Value of pi: %f\n", ***fPtr3);

Ini bekerja sama seperti contoh integer kita, tapi dengan floats. Ketika kita cetak ***fPtr3, kita mengikuti rantai penunjuk kembali ke nilai pi.

Memperbarui Variabel Asli dengan Dereferencing

Salah satu hal menarik tentang rantai penunjuk adalah kita dapat menggunakannya untuk memodifikasi nilai asli. mari kita lihat bagaimana:

int score = 85;
int *scorePtr1 = &score;
int **scorePtr2 = &scorePtr1;

printf("Original score: %d\n", score);

**scorePtr2 = 90;  // Memperbarui nilai melalui rantai penunjuk

printf("Updated score: %d\n", score);

Dalam contoh ini, kita menggunakan **scorePtr2 untuk mengubah nilai score. Itu seperti mengirimkan pesan melalui rantai orang untuk memperbarui skor!

Rantai Penunjuk Karakter

mari kitaakhiri dengan contoh yang sedikit lebih kompleks menggunakan penunjuk karakter:

char letter = 'A';
char *charPtr1 = &letter;
char **charPtr2 = &charPtr1;
char ***charPtr3 = &charPtr2;

printf("Original letter: %c\n", ***charPtr3);

**charPtr2 = 'B';  // Memperbarui nilai

printf("Updated letter: %c\n", letter);

Ini bekerja sama seperti contoh sebelumnya, tapi dengan karakter. Kita dapat mengubah huruf dari 'A' ke 'B' menggunakan rantai penunjuk.

Tabel Metode

Berikut adalah tabel praktis yang menyummariskan metode yang kita diskusikan:

Metode Deskripsi Contoh
Membuat penunjuk Gunakan operator & untuk mendapatkan alamat variabel int *ptr = &value;
Dereferencing Gunakan operator * untuk mengakses nilai yang dipointerkan int x = *ptr;
Membuat penunjuk ke penunjuk Gunakan asterisk ganda ** int **ptr2 = &ptr1;
Dereferencing rantai Gunakan banyak asterisk int value = ***ptr3;
Memperbarui melalui rantai Assign nilai menggunakan pointer yang direferensi **ptr2 = 90;

Dan begitulah, teman-teman! Kita telah melintasi jalan berliku rantai penunjuk dalam C. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Sebelum Anda tahu, Anda akan menjuggling pointer seperti penghibur sirkus yang ahli! ?

Selamat coding, dan semoga pointer Anda selalu menunjuk ke arah yang benar! ?

Credits: Image by storyset