Page 167 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 167

int x, y;

                         x = 10;
                         y = 12;

                         P = &x;

                         *P = 5; /* SALAH, karena nilai dari alamat yang ditunjuk
                                        bersifat konstan */
                         x = 30;  /* SALAH, karena nilai x besifat konstan */

                         P = &y; /* BENAR, hal ini diizinkan karena pointer P tidak
                                        bersifat konstan */

                         return 0;
                      }


                      Pada  program  di  atas  tampak  statemen  const int *P yang  menyatakan  bahwa  kita
                      melakukan deklarasi konstanta terhadap nilai yang alamatnya akan ditunjuk oleh pointer
                      P. Dengan demikian, apabila pointer P menunjuk ke alamat dari variabel x, maka nilai x
                      ataupun  *P tidak  dapat  diubah.  Sedangkan  pointer  P di  atas  tidak  bersifat  konstan
                      sehingga kita masih dapat memerintahkan pointer tersebut untuk menunjuk ke alamat
                      dari variabel lain (dalam hal ini y).

                      7.9.2.  Kata Kunci const Setelah Tipe Data

                      Bentuk  umum  dari  penempatan  kata  kunci  const setelah  tipe  data  adalah  sebagai
                      berikut.

                        tipe_data * const nama_pointer;

                      Berbeda dengan sebelumnya, di sini kita mendeklarasikan pointer yang bersita konstan.
                      Artinya  pointer  tersebut  hanya  dapat  menunjuk  ke  satu  buah  alamat  tertentu  saja.
                      Berikut ini contoh program yang akan menunjukkan hal tersebut.



                      #include <stdio.h>
                      int main(void) {

                         /* Mendeklarasikan pointer P yang bersifat konstan */
                         int *const P;

                         int x, y;

                         x = 10;
                         y = 12;

                         P = &x;

                         *P = 5;      /* BENAR, karena nilai dari alamat yang ditunjuk
   162   163   164   165   166   167   168   169   170   171   172