Page 164 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 164
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