Pointer
Pointer
Pengertian
Suatu Variabel yang berisi alamat memori sebagai nilainya. Merupukan variabel level rendah yang dapat digunakan untuk menunjuk nilai interger, character, float, double, atau single dan tipe - tipe data lain yang didukung oleh bahasa pemrograman. Besifat dinamis dan lebih fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki NULL, disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprekdiksi. Variabel pointer berisi alamat dari suatu obyek lain. Sebagai contoh, px adalah variabel pinter dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori (alamat awal) 100, mka px akan berisi 100.
Misalnya:
Apabila kita membuat program yang akan menampilkan suatu nilai di dalam suatu variabel tertentu dan menampilkan suatu nilai di dalam suatu variabel tertentu dan menampilkan juga alamat suatu pointer yang isinya sama dengan yang ditunjuk oleh variabel tadi.
Maka dala program kita tuliskan (C++):
Meningkatkan kinerja untuk operasi yang dilakukan secara berulang, karena variabel pointer bersifat dinamis (dapat diubah - ubah lokasi penyimpanannya dalam memory).
Pada variabel biasa kita tidak perlu tahu alamat memory dari variabel tersebut. Untuk mengakses hanya perlu nama variabel tersebut. Tapi untuk struktur data dinamis (linked list, tree dsb) hal tersebut tidak bisa. Penggunaan pointer yang tepat dapat mempercepat sebuah proses secara signifikan. Pemindahan data yang besar dari sebuah variabel.
Operator Alamat
Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan.
Dilambangkan dengan simbol "&"
Contoh:
int y = 5;
int *yPtr;
Maka pernyataan:
yPtr = &y
Ini berarti bahwa alamat dari variabel y ditunjukkan kepada variabel pointer yPtr.
Operator Reference
Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer
Deklarasi Variabel Pointer
Char*data1
Int*data2
Operasi variabel pointer dapat dikerjakan oleh variabel pointer yang lain.
Contoh:
Nilai1 = 8
Ptr1 = &Nilai;
Ptr2 = Ptr1;
Maka Ptr1 dan Ptr menghasilkan alamat variabel nilai1 yang sama
Int*alamat;
int nilai = 10;
alamat = &nilai;
printf("%d",*alamat);
Dengan
int * nilai;
int data = 10;
alamat = &data;
printf ("%d", alamat);
Dereferencing Pointer
Adalah mengambil nilai yang ditunjuk oleh sebuah variabel pointer. Untuk melakukan dereferencing pointer, kita harus menggunakan simbol *. Bila p adalah pointer, maka *p adalah nilai yang ditunjuk oleh p
Operasi Pointer
- Operasi Penugasan
- Operasi Aritmatika
- Operasi Logika
Operasi Penugasan
Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh:
y = 65;
x1 = &y;
x2 = x1;
Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatik dengan nilai integer saja. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Hanya 4 operator aritmatika dapat digunakan pada pointer, yaitu ++, ==, +, dan -,
Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Contoh:
Atau disebut operasi perbandingan. Pointer dapat dibandingkan dengan menggunakan operator hubungan, seperti !=, ==, <, dan >.
Contoh:
{
int num[4];
int*start, *end;
start = num;
end = &num[3];
while (start != end)
}
Pointer dan Array
Array secara internal akan diterjemahkan dalam bentuk pointer.
Deklarasi variabel:
int tgl_lahir[3] = {01, 09, 64};
int *ptgl;
Kemudian diberi instruksi:
ptgl = &tgl_lahir[0];
Maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol.
Instruksi diatas bisa juga ditulis menjadi:
ptgl = tgl_lahir;
Nama array tanpa tanda kurung menyatakan alamat awal dari array.
Contoh dalam program c++
Pointer juga dapat digunakan untuk mendeklarasikan variabel string.
Contoh:
char*pkota = "Semarang";
hampir sama dengan:
char kota [] = "Semarang";
tetapi sebenarnya tidak sama.
pkota adalah pointer (menyatakan alamat) yang menunjuk ke string "Semarang", kota adalah array (array menyatakan alamat konstan, tak dapat diubah
Komentar
Posting Komentar