Sunday, April 27, 2014

Pointer dalam C++ , untuk apa ?

Pointer dalam C++ , untuk apa ?

Beberapa hari yang lalu ketika saya memulai memelajari C++ , progress saya berhenti cukup lama di satu bab => Pointer. Sejauh (padahal ngga jauh) yang saya pelajari di Java, saya belum pernah menemukan kata yang satu ini. Pointer memang cukup membingunkan untuk pertama kali, bahkan pada salah satu buku yang saya baca, penulis bercerita bahwa ia pernah mewawancarai seorang pegawai Microsoft yang bahkan memberikan pengertian yang salah mengenai konsep dan kegunaan pointer. Point ini cukup untuk membuktikkan pointer cukup sulit namun sangat berguna.
Begini ceritanya .. hehe .
1. Pengertian
Sebenarnya pointer hanyalah sebuah variabel biasa yang tidak biasa. Bedanya, jika variabel biasa menyimpan sebuah nilai, pointer menyimpan address. Apa itu address ? Sebenarnya CPU tidak mengenal huruf, atau nama. Komputer hanya menyimpan sebuah nilai dalam bentuk yang kita sebut address yang biasanya berbentuk heksadesimal. Sebenarnya anda bisa mengetahui letak address suatu variabel.

1
2
int x = 7;
std::cout << "Address dari variabel x atau 7 adalah \t : \t" << &x << "\n";
Yap cukup dengan menambahkan “&” didepan nama variabel. “&” => dibaca ampersand
2. Apa guna pointer ?
Ada beberapa cara untuk memindahkan data atau mentransfer data dari satu fungsi ke fungsi lain. Tentu cara paling sederhana adalah dengan memindahkan data itu sendiri sebagaimana biasanya. Namun ada saatnya cara ini tidak efisien apabila jumlah data yang dipindahkan sangat besar sehingga memakan memory double. Disinilah gunanya pointer, daripada memindahkan datanya lebih baik hanya mengirim address nya saja sehingga fungsi lain tersebut dapat merujuk ke address tersebut untuk mendapatkan nilai datanya. Simple !
Guna lain ? Biasanya fungsi hanya dibekali kemampuan (ninja, eh ?) untuk memakainya saja . Bagaimana jika fungsi tersebut ingin diberi kemampuan untuk mengubah nilai data yang melewatinya ? Pakai pointer.
3. Pendeklarasian pointer !
1
2
int x = 7 ; // variabel biasa
int *u; // pointer
4. Lanjutan
1
2
int x = 7;
int *u = &x;
Kode diatas berarti bahwa pointer u menuju ke variabel x . Sehingga pointer u sekarang memiliki hak untuk memanipulasi data x dengan kata lain jika kita melakukan pendeklarasian seperti berikut
1
2
3
int x = 7;
int *u = &x;
*u = 87;
maka nilai x pun akan berubah menjadi 87.
5. Penggunaan pointer dalam fungsi
Saya rasa kali ini , penjelasan cukup didalam code dibawah ini. Biarlah code yang berbicara.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include
using namespace std;
int double_it(int *x, int *y) {
    *x *= 2;
    *y *= 2;
}
int main() {
    int x, y;
    cout << "Masukkan dua angka (pisahkan dengan spasi ex: 1 2) : " << endl;
    cin >> x >> y;
    cout << "Sebelum melewati fungsi double_it " <
    cout << "x \t = \t" << x << endl;
    cout << "y \t = \t" << y <
    double_it(&x, &y);
    cout << "Setelah melewati fungsi double_it " <
    cout << "x \t = \t" << x << endl;
    cout << "y \t = \t" << y <
}
    
compile dan lihat hasilnya

0 comments:

Post a Comment

http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html