Page 156 - Project Akhir Media Pendidikan
P. 156
*( (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.
152