Page 168 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 168

tidak bersifat konstan */
                         x = 30;      /* BENAR, karena nilai x tidak besifat konstan */

                         P = &y;     /* SALAH, karena pointer P bersifat konstan */

                         return 0;
                      }


                      Kali ini kita mendeklarasikan konstanta pointer, yaitu dengan nama P, dimana pointer
                      tersebut tidak dapat menunjuk ke alamat dari variabel lain (dalam hal ini variabel  y).
                      Pada  kasus  di  atas  pointer  P hanya  dapat  menunjuk  ke  alamat  dari  variabel  x saja.
                      Namun di sini kita masih diperbolehkan untuk mengubah nilai dari variabel x maupun
                      *P.

                      7.9.3.  Kata Kunci const Sebelum dan Setelah Tipe Data

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


                       const tipe_data * const nama_pointer;

                      Bentuk yang ketiga ini merupakan gabungan dari bentuk pertama dan kedua. Hal ini
                      berarti bahwa di sini kita melakukan deklarasi konstanta terhadap nilai dari variabel dan
                      juga nilai dari pointernya. Dengan melakukan hal ini, maka kita tidak diizinkan untuk
                      mengubah nilai dari variabel maupun mengubah alamat yang telah ditunjuk oleh pointer
                      tersebut. Berikut ini contoh program yang akan menunjukkan konsep di atas.



                      #include <stdio.h>

                      int main(void) {

                         /* Mendeklarasikan konstanta terhadap variabel dan juga
                            pointer P */
                         const int *const P;
                         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;     /* SALAH, karena pointer P bersifat konstan */

                         return 0;
   163   164   165   166   167   168   169   170   171   172   173