Page 153 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 153
*( (int *) P) /* dan */ *( (double *) P)
Ini berarti sebelum kita melakukan dereference pointer, kita harus menganggap pointer
P sebagai pointer yang menunjuk ke tipe int ataupun double terlebih dahulu. Jadi
kesimpulannya kita tidak dapat melakukan dereference pointer terhadap pointer yang
bertipe void.
7.5. Pointer dan Array
Sebagai programmer C, Anda harus mengetahui bahwa pointer dan array adalah dua
buah hal yang saling berhubungan. Untuk menerangkan hal ini, anggaplah kita memiliki
array A yang terdiri dari 10 buah elemen yang bertipe int serta pointer P yang akan
menunjuk ke tipe int. Sekarang apabila kita mengeset pointer tersebut untuk menunjuk
ke elemen pertama array, maka kita dapat mengakses elemen-elemen dari array A
tersebut dengan menggunakan pointer P. Perhatikan sintak berikut ini.
/* Mendeklarasikan array A dengan 10 buah elemen bertipe int */
int A[10];
/* Mendeklarasikan pointer P dan mengesetnya untuk menunjuk ke
alamat dari A[0] */
int *P = &A[0]; /* bisa ditulis dengan int *P = A */
Melalui sintak di atas kita dapat melakukan pengaksesan elemen array dengan
menggunakan A[0], A[1], A[2], …, A[9] atau dengan cara *P, *(P+1), *(P+2), …,
*(P+9). Situasi ini dapat direpresentasikan melalui cara seperti berikut.
P
•
A[0] A[1] A[2] A[3] … A[9]
P+1 P+2
Gambar 7.4. Hubungan Pointer dan Array
Dari gambar tersebut dapat kita simpulkan bahwa apabila P = &A[0], maka P+1 =
&A[1], P+2 = &A[2] dan seterusnya. Di sini kita melakukan operasi aritmetika
terhadap pointer P (dalam hal ini operasi penjumlahan), proses seperti ini dinamakan
dengan aritmetika pointer.
Untuk membuktikan hal tersebut, berikut ini contoh program yang akan menunjukkan
hubungan antara pointer dan array. Adapun sintaknya adalah seperti berikut.