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
   153   154   155   156   157   158   159   160   161   162   163