Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.
Deference (&)
Deference (&) merupakan suatu operator yang berfungsi untuk menanyakan alamat dari suatu variabel. Apabila kamu memberikan simbol & pada awal variabel dan mencetak hasilnya pada jendela CLI, maka yang akan tercetak adalah alamat dari variabel tersebut bukan nilai yang ditampung oleh variabel tersebut. Berikut contoh programnya:
#include <iostream>using namespace std;int main(){int a = 5;cout<<"Alamat Variabel a adalah :"<<&a<<endl;cout<<"Nilai Variabel a adalah :"<<a<<endl;return 0;}Hasil nya sebagai berikut:
Pointer dan array
Tahukah kamu bahwa jika kamu menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari array tersebut. Misalkan kamu membuat sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan, Berikut adalah sintak program nya:
#include <iostream>using namespace std;int main(){int nilaiArray[5] = {2,5,4,6,7};int *pointerArray;pointerArray = nilaiArray;cout<<"Nilai pada elemen 0 nilaiArray adalah = "<<nilaiArray[0]<<endl;cout<<"Nilai pada elemen 0 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;pointerArray++; // naikan alamat yang ditunjuk pointer sejauh 1 integer*pointerArray = 10; //Ubah nilai elemen 1 array (nilaiArray) menjadi 10cout<<"Nilai pada elemen 1 nilaiArray adalah = "<<nilaiArray[1]<<endl;cout<<"Nilai pada elemen 1 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;pointerArray = nilaiArray; //kembalikan pointer pada elemen pertamacout<<endl;cout<<"Akses nilai semua array dengan pointer dan looping for"<<endl;for (int i=0; i<5; i++){ cout<<"Nilai indeks ["<<i<<"] adalah = "<<*(pointerArray+i)<<endl;}return 0;}Maka hasil nya akan seprti berikut:
Dari hasil di atas, dapat kamu lihat bagaimana cara mengakses nilai array dengan menggunakan pointer.
Suatu
pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel
int. Sebab, tipe data tersebut akan menentukan sifat pointer ketika
alamat pointer tersebut dilakukan increment. Begitu juga untuk tipe data yang lain.
Pointer sebagai parameter fungsi
Seperti
halnya dengan array, pointer dapat digunakan sebagai parameter suatu
fungsi. Karena sifat pointer yang hanya sebagai penunjuk, maka setiap
perubahan yang terjadi pada parameter, sebenarnya terjadi pada variabel
yang ditunjuk bukan pada variabel pointer. Berikut Mimin contohkan
program sederhananya:
#include <iostream>using namespace std;void tambah(int *angka){*angka +=20;}int main(){int nilai = 10;cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;tambah(&nilai); //Memasukkan alamat variabel nilai pada fungsi tambahcout<<"Nilai variabel nilai adalah = "<<nilai<<endl;return 0;}Dan berikut adalah hasil nya:
Pada program diatas, dimana ketika alama suatu variabel diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut. Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika kamu ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kamu cukup memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter fungsi
Referensi : http://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/



Tidak ada komentar:
Posting Komentar