Page 158 - Project Akhir Media Pendidikan
P. 158
diizinkan untuk melakukan operasi perkalian dan pembagian. Perhatikan potongan
sintak di bawah ini.
int A[10];
int *P1 = &A[0];
int *P2 = &A[3];
Maka statemen P2-P1 akan menghasilkan nilai 3. Kenapa 3? Ini merupakan selisih
letak alamat memori antara yang ditunjuk oleh pointer P2 dan P1. Untuk membuktikan hal
tersebut, di bawah ini kita akan mengimplementasikannya ke dalam sebuah program.
Adapun sintaknya adalah sebagai berikut.
#include <stdio.h>
int main(void) {
int A[10] = {10,20,30,40,50,60,70,80,90,100};
int j, selisih;
/* Mendeklarasikan pointer P1 dan mengesetnya untuk menunjuk
alamat dari A[0] */
int *P1 = &A[0];
/* Mendeklarasikan pointer P2 dan mengesetnya untuk menunjuk
alamat dari A[3] */
int *P2 = &A[3];
/* Menampilkan semua elemen array */
for (j=0; j<10; j++) {
printf(“A[%d] = %d\n ”, j, A[j]);
}
printf(“\n”);
/* Melakukan operasi pengurangan terhadap dua buah pointer */
selisih = P2 – P1;
/* Menampilkan nilai serta alamat yang ditunjuk oleh
pointer P1 dan P2 */
printf(“*P1 = %d \tP1 = %p\n”, *P1, P1);
printf(“*P2 = %d \tP2 = %p\n”, *P2, P2);
printf(“\nP2-P1 = %d\n”, selisih);
/* Melakukan operasi penjumlahan terhadap pointer P1 dan P2 */
P1 = P1 + 1; /* Menyebabkan P1 menunjuk ke alamat
dari A[1] */
P2 = P2 + 2; /* Menyebabkan P2 menunjuk ke alamat
dari A[5] */
/* Menampilkan kembali nilai serta alamat yang ditunjuk oleh
pointer P1 dan P2 */
printf(“\nSetelah operasi penjumlahan:\n”);
154