Page 172 - Project Akhir Media Pendidikan
P. 172

}

                      Pada program di atas, pointer P hanya dapat menunjuk ke alamat dari variabel x saja. Selain
                      itu kita juga tidak diizinkan untuk melakukan perubahan nilai terhadap variabel dari alamat
                      yang ditunjuk oleh pointer P.

                      7.10.  Mengalokasikan Memori

                      Dalam dunia pemrograman kita diizinkan untuk mengalokasikan ruang memori secara
                      dinamis pada saat program berjalan sesuai dengan yang kita butuhkan, proses seperti ini
                      dinamakan dengan alokasi memori dinamis (dynamic memory allocation). Sedangkan
                      pada  saat  kita  mendeklarasikan  variabel  (baik  global  maupun  lokal)  di  dalam  kode
                      program  yang  kita  tulis,  kompiler  secara  otomatis  akan  memesan  sejumlah  ruang
                      memori untuk menampung variabel tersebut, proses seperti ini disebut dengan alokasi
                      memori statis (static memory allocation).

                      Untuk melakukan alokasi memori secara dinamis kita membutuhkan pointer untuk mencatat
                      alamat-alamat  baru  yang  dipesan.  Bahasa  C  telah  menyediakan  fungsi-fungsi  yang
                      digunakan  untuk  proses  pemesanan  memori  secara  dinamis,  yaitu  fungsi malloc(),
                      calloc() dan realloc(). Adapun penjelasan dari masing-masing fungsi tersebut dapat
                      Anda lihat  pada sub bab di bawah ini.

                      7.10.1. Menggunakan Fungsi malloc()

                      Fungsi ini mempunyai bentuk prototipe sebagai berikut.

                        void *malloc(size_t n);


                      Fungsi malloc() akan mengembalikan pointer ke sejumlah n byte ruang memori yang
                      belum diinisialisasi. Apabila tidak terpenuhi, maka fungsi ini akan mengembalikan nilai
                      NULL.  Hal  yang  perlu  diperhatikan  dalam  menggunakan  fungsi  ini  adalah  kita  harus
                      melakukan typecasting terhadap pointer yang akan dipesan sesuai dengan tipe data yang
                      diinginkan. Perhatikan contoh penggunaan fungsi malloc() di bawah ini.


                      int array[10];
                      int *P;

                      P = (int*) malloc (10 * sizeof(int));


                      Sintak di atas artinya kita memesan atau mengalokasikan ruang memori sebanyak 40
                      byte (berasal dari 10x4) untuk menyimpan data yang bertipe int dan mencatat ruang
                      tersebut ke dalam pointer P. Adapun nilai 4 di sini berasal dari ukuran tipe data int,
                      yang dituliskan dengan sizeof(int). Jadi apabila kita ingin mengalokasikan ruang
                      memori  untuk  tipe  data  double,  sedangkan  kita  telah  mengetahui  bahwa  tipe  data
                      double berukuran 8 byte, maka kita dapat menuliskannya sebagai berikut.






                                                          168
   167   168   169   170   171   172   173   174   175   176   177