Fransisca's Blog

blog buat tugas PBO..^^

pointer

Diposting oleh sisqa

dalam memori, variable dipandang sebagai sel yang dapat diakses. dengan cara ini kita ga perlu tau lokasi fisik dari data kita dalam memori. tapi yang pasti sel memori ini sangat rapi dan teratur dan di beri nomor secara berurut, sehingga sangat mudah dalam proses pencariannya.

operator refernsi(&)
ketika kita menyatakan sebuah variable, jumlah memori yang kita perlukan uda dipesan di suatu lokasi pada memori(alamat memorinya). kita ga akan tau dimana posisinya sampai pada saat runtime.
alamat yang ditempati variable ini didalam memori kita sebut dengan referensi ke variable. referensi ini dapat di peroleh dengan mendahului identifier dari sebuah variable dengan tanda ampersand(&), yang diterjemahkan sebagai 'alamat', contoh : ted = & andy
artinya kita menugaskan ted diisi dengan alamat andy. jadi kita ga mikirin isi nya andy, yang di liat alamatnya andy.

contoh:
andy = 25
fred = andy
ted = &andy

pertama kita kasih nilai ke andy 25 dengan alamat yang kita amsumsikan 1000
kedua fred menyalin isi andy yaitu 25
ketiga ted berisi alamat dari andy yaitu 1000

dereference operator(*)
pointer adalah variable yang menyimpan referensi ke variable lain. pointer itu " menunjuk ke" variable yang direferensikan. untuk mengakses nilai yang terkandung dalam variable pointer, kita hanya perlu menambahkan tanda * ke identifier pointer.
contoh:
beth = *ted
berarti beth memiliki nilai yang sama dengan nilai yang ditunjuk oleh ted.
seperti contoh sebelumnya, maka beth akan berisi 25 karna ted menunjuk 1000 dan isi dari 1000 adalah 25.
sedangkan jika beth = ted, maka maksudnya adalah beth = ted(yang berisi 1000)
jadi beth = 1000.

perhatikan perbedaan antara dereference referensi dan operator:
& adlah operator dan referensi dapat dibaca sebagai 'alamat'
* adlah operator dan dereference dapat di baca sebagai ' menunjuk ke'
dengan demikian mereka saling melengkapi.

contoh:
#include

int main()
{
int nilai1 = 5, nilai2 = 15;
int *p1,*p2;

p1=&nilai1; // p1 berisi alamat dari nilai1
p2=&nilai2; // p2 berisi alamat dari nilai2
*p1 = 10; //nilai di p1
*p2 = *p1; // nilai di p2= nilai di p1
p1 = p2; // p1=p2 (nilai pointernya di copi)
*p1 = 20; // nilai p1 = 20

cout << "nilai1 : " << nilai1 << endl;
cout << "nilai2 : " << nilai2 << endl;
return 0;
}
output:
nilai1 : 10
nilai2 : 20


ini g ambil dari http://www.cplusplus.com/doc/tutorial/pointers/
baca2 dr situ aja klo bnr2 perlu

semangatttttt^^

0 komentar:

Posting Komentar