Page 151 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 151

Dari  hasil  yang  diberikan di  atas,  di  situ  terlihat  bahwa  nilai  dari  P akan  sama  dengan
                      nilai  &X, sedangkan nilai  X akan sama dengan nilai  *P. Tampak bahwa apabila nilai  X
                      akan  selalu  sama  dengan  nilai  *P,  begitu  juga  sebaliknya.  Hal  ini  disebabkan  oleh
                      karena keduanya merupakan variabel yang tersimpan dalam alamat yang sama.

                      7.4.  Mendeklarasikan Pointer Tanpa Tipe

                      Sebelumnya Anda telah mempelajari bahwa pointer yang dideklarsikan dengan tipe data
                      tertentu (misalnya tipe int), hanya dapat menunjuk alamat yang berisi variabel dengan
                      tipe data yang sesuai saja (dalam hal ini tipe int). Dengan kata lain pointer tersebut
                      tidak dapat digunakan untuk menunjuk ke alamat yang berisi variabel dari tipe data lain
                      seperti float, double, char maupun lainnya.

                      Dalam bahasa C terdapat cara khusus untuk membuat pointer tersebut dapat menunjuk
                      ke alamat-alamat yang berisi variabel dari tipe apapun, yaitu dengan menggunakan kata
                      kunci  void pada  saat  pendeklarasiannya.  Maka  dari  itu,  pointer  seperti  ini  sering
                      disebut dengan istilah pointer tanpa tipe (void pointer). Berikut ini bentuk umum untuk
                      mendeklarasikan suatu pointer tanpa tipe.

                       void *nama_pointer;




                      Untuk membuktikan hal tersebut, perhatikan program di bawah ini.


                      #include <stdio.h>

                      int main(void) {
                         void *P;          /* Mendeklarasikan pointer tanpa tipe dengan
                                              nama P*/
                         int X = 21;       /* Mendeklarasikan variabel X dengan tipe int */
                         double Y = 5.42;        /* Mendeklarasikan variabel Y dengan tipe
                                                     double */

                         /* Memesan ruang memori untuk mengalokasikan nilai dengan tipe
                            data int */
                         P = (int *) malloc (sizeof(X));

                         /* Mengisikan alamat dari variabel X  yang bertipe int */
                         P = &X;

                         /* Menampilkan nilai */
                         printf(“Nilai X \t: %d\n”, X);
                         printf(“Nilai &X \t: %p\n”, &X);
                         printf(“Nilai *P \t: %d\n”, *((int *) P));
                         printf(“Nilai P \t: %p\n\n”, P);
   146   147   148   149   150   151   152   153   154   155   156