Pointer Pada C++
Karena malam ini saya libur panjang dari kesibukan kerja di dunia nyata (ditambah ngerjain tugas kuliah orang), maka kesempatan saya untuk update entry di blog ini juga... ya gitu deh.
Kita lanjut belajar bahasa pemrograman C++. Ohiya mohon di "keep" dikepala kalau kita akan lebih menekankan pembelajaran dengan C++ tetapi akan lebih sering menggunakan built-in fungsi dari bahasa C. Jadi saya harap sudah tau sedikit lah referensinya ketika membaca source codenya.
Nah pembahasan selanjutnya adalah pointer. Jadi ketika kita membuat program yang lumayan kompleks dan terdiri dari banyak fungsi maka tidak bisa dipungkiri akan banyak memakan memori sehingga penghematan memori merupakan hal wajib. Implementasi fungsi "call by value" merupakan metode sederhana dan sering sekali dipakai ketika kita membuat suatu fungsi pada C++. Tapi bagaimana kalau kita ingin mengubah value namun hanya me-reference pada address memorynya saja? untuk itulah digunakan pointer.
Meet The Pointer
Kita akan mulai dengan program sederhana untuk penggunaan pointer. Yang perlu kita ketahui adalah dalam variabel pointer terdapat simbol asterisk (*) sebagai Dereference Operator atau bisa dikatan sebagai tanda kalau variabel tersebut menempatkan value berdasarkan alamat memori. Dan juga simbol ampersand (&) sebagai Address-of Operator yang berguna untuk mendapatkan atau melihat alamat memori dari variabel. Apakah harus mendeklarasikan variabel pointer (*) dulu baru mengeceknya dengan ampersand? tentu tidak. Karena seperti yang saya bilang kalau simbol "&" hanya untuk menampilkan alamat memori yang dimiliki suatu variabel (jadi mau sudah diberi pointer atau tidak ya kamu sudah tau sendiri lah kegunaanya).
Sederhananya simbol "&" untuk mengetahui letak memori dari sebuah variabel, sedangkan simbol "*" untuk menandakan pointer pada sebuah variabel.
Play Around with Pointer
Ok karena kita sudah tau apa itu pointer kita mulai saja "bermain" dengan doi hehe.
/>int thisVal = 20;
/>int *pointer;
Oke kita sudah mendeklarasikan sebuah variabel bertipe integer dengan nilai 20 dan sebuah variabel "pointer". Tunggu, hanya itu saja? kita lanjut ke langkah berikutnya.
/>pointer = &thisval;
Baiklah ini sudah membingungkan. Apa maksud dari line code diatas?. Kita meng "assign" atau mengisi alamat memori variabel thisVal ke dalam pointer pointer. Mari kita coba print alamat memori thisVal dan pointer.
/>printf("Alamat memori variabel thisVal: %x\n", &thisVal);
---> Alamat memori variabel thisVal: bbcad1fee
/>printf("Alamat memori di pointer 'pointer': %x\n", pointer);
---> Alamat memori di pointer 'pointer': bbcad1fee
INGAT alamat memori disini bisa berbeda-beda. Oke apa yang kalian tangkap?. Alamat memori yang disimpan pointer adalah alamat dari variabel thisVal. Itu artinya kita bisa mengubah "nilai" dari thisVal melalui variabel pointer dengan cara berikut.
/>*pointer = 40;
/>printf("Nilai thisVal kemudian: %d\n", thisVal);
--->Nilai thisVal kemudian: 40
TUNGGU. Emang bisa gitu?. Kan harusnya kita "assign" nilai variabel pointer, terus kita "re-assign" thisVal = pointer. Kok cukup dengan "assign" pointer saja?. Karena alamat memori pointer sudah kita "assign" dengan variabel thisVal jadinya kita cukup meng-"assign" nilai melalui variabel pointer.
Epilog
Yah mungkin cukup segitu dulu penjelasan sederhana tentang pointer. Terlalu sederhana untuk dibilang pengantar dalam memahami pointer dalam C atau C++. Tapi selalu gunakan mesin pencari google sebagai teman berselancarmu dalam mencari informasi sedalam-dalamnya. Saya harap pengantar ini cukup mudah dipahami untuk mereka yang baru mulai belajar pointer.
Meet The Pointer
Kita akan mulai dengan program sederhana untuk penggunaan pointer. Yang perlu kita ketahui adalah dalam variabel pointer terdapat simbol asterisk (*) sebagai Dereference Operator atau bisa dikatan sebagai tanda kalau variabel tersebut menempatkan value berdasarkan alamat memori. Dan juga simbol ampersand (&) sebagai Address-of Operator yang berguna untuk mendapatkan atau melihat alamat memori dari variabel. Apakah harus mendeklarasikan variabel pointer (*) dulu baru mengeceknya dengan ampersand? tentu tidak. Karena seperti yang saya bilang kalau simbol "&" hanya untuk menampilkan alamat memori yang dimiliki suatu variabel (jadi mau sudah diberi pointer atau tidak ya kamu sudah tau sendiri lah kegunaanya).
Sederhananya simbol "&" untuk mengetahui letak memori dari sebuah variabel, sedangkan simbol "*" untuk menandakan pointer pada sebuah variabel.
Play Around with Pointer
Ok karena kita sudah tau apa itu pointer kita mulai saja "bermain" dengan doi hehe.
/>int thisVal = 20;
/>int *pointer;
Oke kita sudah mendeklarasikan sebuah variabel bertipe integer dengan nilai 20 dan sebuah variabel "pointer". Tunggu, hanya itu saja? kita lanjut ke langkah berikutnya.
/>pointer = &thisval;
Baiklah ini sudah membingungkan. Apa maksud dari line code diatas?. Kita meng "assign" atau mengisi alamat memori variabel thisVal ke dalam pointer pointer. Mari kita coba print alamat memori thisVal dan pointer.
/>printf("Alamat memori variabel thisVal: %x\n", &thisVal);
---> Alamat memori variabel thisVal: bbcad1fee
/>printf("Alamat memori di pointer 'pointer': %x\n", pointer);
---> Alamat memori di pointer 'pointer': bbcad1fee
INGAT alamat memori disini bisa berbeda-beda. Oke apa yang kalian tangkap?. Alamat memori yang disimpan pointer adalah alamat dari variabel thisVal. Itu artinya kita bisa mengubah "nilai" dari thisVal melalui variabel pointer dengan cara berikut.
/>*pointer = 40;
/>printf("Nilai thisVal kemudian: %d\n", thisVal);
--->Nilai thisVal kemudian: 40
TUNGGU. Emang bisa gitu?. Kan harusnya kita "assign" nilai variabel pointer, terus kita "re-assign" thisVal = pointer. Kok cukup dengan "assign" pointer saja?. Karena alamat memori pointer sudah kita "assign" dengan variabel thisVal jadinya kita cukup meng-"assign" nilai melalui variabel pointer.
Epilog
Yah mungkin cukup segitu dulu penjelasan sederhana tentang pointer. Terlalu sederhana untuk dibilang pengantar dalam memahami pointer dalam C atau C++. Tapi selalu gunakan mesin pencari google sebagai teman berselancarmu dalam mencari informasi sedalam-dalamnya. Saya harap pengantar ini cukup mudah dipahami untuk mereka yang baru mulai belajar pointer.
Comments
Post a Comment