Pointer
TI Politala Algoritma Pemrograman 2B
A. Pengertian Pointer
Pointer adalah variabel yang menunjuk pada variabel lainnya. Pointer dapat menyimpan alamat memori yang ditunjuk. Pada pointer kita dapat menunjuk menunjuk suatu memori, mengubah nilai dan menyalin nilai memori tersebut secara tidak langsung (perantara melalui variabel pointer).
B. Fungsi Pointer
Adapun fungsi dari pointer sendiri yaitu :
- Menyimpan alamat memori dari sebuah variabel (tipe data atau objek dari kelas).
- Menyimpan alamat dari sebuah fungsi (function pointer).
- Mengirim "Paramerer yang berupa variabel" ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
- Untuk membuat variabel dinamis.
C. Macam-Macam Operator Pada Pointer
Dalam pointer terdapat dua macam operator yang dapat kita gunakan, yaitu :
1. Operator Deference (&)
Address-of Operator(&) adalah operator yang digunakan untuk mendapatkan atau melihat alamat memori yang dimiliki oleh variabel tersebut. Cara menggunakannya adalah dengan meletakkan tanda '&' pada depan identitas saat pemanggilan variabel. Lokasi variabel akan ditentukan otomatis oleh kompiler dan operating system pada saat run-time.
2. Operator Reference (*)
Dereference Operator(*) adalah operator yang digunakan untuk mengakses nilai yang tersimpan secara langsung dengan memberikan awalan arterisk '*' pada identifier pointer. Sama dengan simbol Address-of Operator, peletakkan simbolnya diletakkan diawal variabel.
Contoh Program :
#include <iostream>
using namespace std;
int main()
{
int var = 20;
int *ip;
ip = &var;
*ip = 30;
cout<<" Value of var variable : "<<var<<endl;
cout<<" Address stored in ip variable : "<<ip<<endl;
cout<<" Value of *ip variable : "<<*ip<<endl;
return 0;
}
Hasil Running :
D. Mendeklarasi Variabel Pointer
Pointer
dapat dinyatakan dalam C++ menggunakan penulisan seperti berikut :
tipe_data*nama_pointer;
Keterangan
:
Ø tipe_data
dapat berupa sembarang tipe seperti halnya pada pendefenisian variabel bukan
pointer.
Ø nama_variabel
adalah nama variabel pointer.
Ada dua cara
yang dapat dilakukan dilakukan untuk alokasi space di memori di pointer, yaitu:
1. Menempati
space variabel lain yang sudah punya space
Variabel
lain tersebut dapat berupa variabel
biasa (bukan pointer) atau pointer yang tentunya sudah punya alokasi space di
memori.
Penulisannya:
var_pointer=&var_biasa;
2. Dialokasikan
tersendiri di memori (memori dinamis).
Pointer
tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di
memori dengan instruksi new.
Penulisannya:
var_pointer=new tipe_data-pointer;
E. Pointer Pada Array
Hubungan antara pointer dan array pada C
sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan
dalam bentuk pointer. Konsep array diantaranya adalah banyak loncatan dari
pointer satu ke pointer lain karena secara internal array juga menyatakan
alamat, yaitu pengenal array sama dengan alamat pada elemen pertama, pada
array. Misalnya dideklarasikan sebagai berikut:
int A[5]= {0, 3, 5, 4,7}:
dan int *pntArray;
Contoh program :
#include <iostream>
using namespace std;
int main()
{
int bil[10] = {1,2,3,4,5,6,7,8};
int *p;
p = bil;
cout<<"Alamat 'angka' adalah : "<<bil<<endl;
cout<<"Alamat 'p' adalah : "<<p<<endl;
cout<<"Indeks bil ke 4 : "<<bil[4]<<endl;
cout<<"Indeks p ke 4 : "<<*(p+4)<<endl; // sama dengan bil[4]
return 0;
}
Running :
F. Pointer Sebagai Parameter Suatu 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. Penerapan
pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel
internal dapat diubaholeh fungsi yang dipanggil. Sebagai contoh dapat dilihat
pada fungsi yang dipanggil. Sebagai contoh dapat dilihat pada fungsi berikut :
void tambah (int *angka)
{
*angka = *angka +30;
}
Fungsi diatas dimaksudkan
agar kalau dipanggil variabel yang bersangkutan dengan parameter aktual dapat
diubah nilainya menjadi dinaikkan sebesar 30.
Contoh program :
#include <iostream>
using namespace std;
void penambahan(int &x)
{
x = x+1500;
x = x+1500;
}
void pengurangan(int *y)
{
y = y-2;
}
int main()
{
int bil1 = 10;
int bil2 = 5;
int *p;
p = &bil2;
penambahan(bil1);
pengurangan(p);
cout<<bil1<<endl;
cout<<bil2<<endl;
return 0;
}
Running :
F. Pointer To Pointer
Tidak terbatas menunjuk
alamat dari suatu variabel, pointer dapat pula menunjuk ke pointer lainnya.
Didalam pendeklarasianya, hanya menambahkan pointer reference ( * ) pada
variabel yang akan ditunjuk.
Contoh program :
#include <iostream>using namespace std;
int main()
{
int bil1 = 10;
int *p;
int **ptp;
int ***ptp2;
p = &bil1;
ptp = &p;
ptp2 = &ptp;
cout<<"Alamat 'bil' adalah : "<<bil1<<endl;
cout<<"Alamat 'p' adalah : "<<p<<endl<<endl;
return 0;
}
Running :
DAFTAR PUSTAKA
https://ajikamaludin.blogspot.com/2017/05/belajar-c-struktur-data-pointer-dan.html
https://www.belajarcpp.com/tutorial/cpp/pointer/
https://zoneblog123.blogspot.com/2017/11/pengertian-lengkap-pointer-dan-macam.html
http://catatanflo.blogspot.com/2017/04/cara-deklarasi-pointer-pada-array-c.html
0 komentar:
Posting Komentar