Pointer dan Reference

Beberapa hari ini saya kembali belajar tentang bahasa pemrograman C++ namun dengan cakupan yang lebih luas dan mendalam. Dari dulu saya berusaha mencoba membaca source code C++ dalam proyek mini seseorang, namun tetap saja dengan pemahaman C++ yang pas-pasan malah membuat saya tidak betah berlama-lama dengan bahasa yang satu ini. Syukurlah dengan pembelajaran yang intensif saya sedikit bisa mengerti konsep dalam bahasa C++ yang sebelumnya tidak saya pahami.

Agar lebih konkrit, saya ingin membawakan sedikit pengetahuan yang saya peroleh mengenai pointer ke dalam sebuah artikel.

Dilihat dari datanya, sebuah variabel sebenarnya menyimpan 2 buah nilai: alamat variabel itu dan nilai variabel itu. Untuk bisa mengakses alamat ini, ada 2 cara yang bisa dipakai: menggunakan referensi atau menggunakan pointer.

Contoh di bawah ini adalah menggunakan referensi. Alamat variabel bisa diakses dengan menggunakan tanda & di depaan variabel yang ingin dilihat. Nilai x bisa berubah setiap saat namun alamatnya tidak akan berubah. Ibaratnya penghuni rumah mungkin akan berganti orang, namun sebuah rumah di sebuah perkampungan akan memiliki alamat yang tetap.

1
2
3
4
5
6
int x = 12;
cout << "Nilai:" << x << endl; //mengakses nilai x=12
cout << "Alamat:" << &x << endl; //mengakses alamat -> A
x = 14;
cout << "Nilai:" << x << endl; //mengakses nilai, x=14
cout << "Alamat:" << &x << endl; //mengakses alamat -> A (alamat tetap)

Potongan kode di bawah ini adalah cara untuk mendeklarasikan sebuah pointer p yang menunjuk ke variabel x. Ada 2 cara untuk mendeklarasikan pointer: pertama adalah dengan mendeklarasikan langsung pada saat inisialisasi (contoh pada baris 2) dan cara lain adalah mendeklarasikan kemudian (contoh baris 3).

1
2
3
4
5
6
7
int x = 12;  // inisialisasi variabel x=12
int *p = &x; // alamat dari x disimpan ke dalam pointer p
p = &x;  // alamat dari x disimpan ke dalam pointer p, fungsinya sama dengan baris 2
*p=13; // nilai berubah menjadi *p=13 dan x=13, namun alamat nya tetap, yaitu yang berasal dari x
 
int y = 15;  // deklarasi variabel y
p = &y;  // alamat pointer p berubah ke alamat y, nilai *p=15

Dalam potongan kode di atas, p adalah sebuah variabel yang menyimpan alamat saja. Memang itulah kegunaan pointer, yaitu menyimpan sebuah alamat, sedangkan nilainya bergantung dari nilai dari alamat yang disimpannya. Ibaratnya, sebuah buku kontak hanya bisa menyimpan alamat rumah saja, namun jika kita pergi ke alamat rumah tersebut, bisa saja penghuninya berbeda tergantung siapa yang memiliki rumah tersebut.

Leave a Reply

Your email address will not be published. Required fields are marked *