Page 167 - Project Akhir Media Pendidikan
P. 167
printf(“Nilai **B \t\t = %c\n”, **B);
return 0;
}
Program di atas akan memberikan hasil sebagai berikut.
Nilai a = A
Alamat a = 0073FDE7
Alamat yang ditunjuk P = 0073FDE7
Alamat P = 0073FDE0
Nilai *P = A
Alamat yang ditunjuk B = 0073FDE0
Alamat B = 0073FDDC
Nilai *B = 0073FDE7
Nilai **B = A
Apabila Anda perhatikan secara teliti hasil dari program di atas, maka Anda dapat
menyimpulkan bahwa nilai dari variabel a (yaitu karakter ‘A’) dapat kita akses melalui
pointer P dengan cara menuliskan *P dan dengan menggunakan pointer B dengan cara
menuliskan **B. Sedangkan alamat dari variabel a (yaitu 0073FDE7), dapat kita akses
melalui perintah &a, P ataupun *B. Hal ini menunjukkan bahwa pointer B bukanlah pointer
yang menunjuk ke alamat dari sebuah variabel dengan tipe char, melainkan pointer yang
menunjuk ke alamat dari pointer P. Sebagai bukti dari pernyataan tersebut adalah pada saat
kita melakukan dereference pointer pada pointer B (yaitu dengan menuliskan *B), maka
nilai yang didapatkan bukanlah sebuah nilai bertipe karakter, melainkan sebuah alamat
memori (yaitu alamat yang ditunjuk oleh pointer P atau alamat dari variabel a).
Apabila kita amati, contoh yang kita ambil di atas sebenarnya dapat dikatakan sebagai
pointer ke string. Pasalnya kita telah mendeklarasikan pointer ke tipe char* (string).
Sebagai bahan tambahan bagi Anda untuk dapat benar-benar memahami konsep dari pointer
ke pointer, berikut ini akan disajikan sebuah contoh program lagi dimana di dalamnya
terdapat deklarasi pointer ke pointer (dalam hal ini pointer ke string). Sebelumnya ingat
kembali bahwa string adalah array dari karakter, sedangkan array sebenarnya adalah pointer,
maka dari itu kita dapat menuliskan sintak seperti berikut.
#include <stdio.h>
int main(void) {
/* Mendeklarasaikan array dari karakter (disebut dengan
string) */
char S[] = “Arista”;
/* Mendeklarasikan pointer ke tipe char */
char *P = S; /* Pointer P menunjuk ke array S[0], dapat
163