1.
PENGERTIAN POINTER
Pointer
adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer
tertentu. Pointer merupakan variabel level rendah yang dapat digunakan untuk
menunjuk nilai integer, character, float, double, atau single, dan bahkan
tipe-tipe data lain yang didukung oleh bahasa C. Variabel biasa, sifatnya
statis dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih
fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti
memiliki nilai NULL, dan disebut sebagai dangling pointer karena nilainya tidak
diinisialisasi dan tidak dapat diprediksi.
Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya, sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan operator * (tanda asterisk) . Jika diinginkan untuk menampilkan alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan operator & (tanda ampersand).
Operator Pointer ada dua, yaitu :
Ø
Operator
&
Operator & bersifat
unary (hanya memerlukan satu operand saja).
Operator & menghasilkan
alamat dari operandnya.
Ø
Operator
*
Operator * bersifat unary
(hanya memerlukan satu operand saja).
Operator * menghasilkan
nilai yang berada pada sebuah alamat.
A. DEKLARASI
POINTER
Seperti
halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan.
Bentuk Umum :
Tipe_data *nama_pointer;
//Contoh
Program
#include
<IOSTREAM.h>
#include
<conio.h>
int *px;
char *sh;
void main(){
int x, y; // x dan y
bertipe int
int *px; //
px pointer yang menunjuk objek
clrscr();
x = 87;
px = &x;
// px berisi alamat dari x
y = *px; //
y berisi nilai yang ditunjuk px
cout<<“Alamat
x =”<<&x <<\n”;
cout<<“Isi
px = \n”, px);
cout<<“Isi
x = \n”, x);
cout<<“Nilai
yang ditunjuk oleh px = \n”, *px);
cout<<“Nilai
y = \n”, y);
getch();
}
B.
OPERASI POINTER
Ø Operasi
Penugasan
Suatu
variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu
variable pointer dapat disalin ke variable pointer yang lain.
//Contoh Program
#include
<iostream.h>
#include
<conio.h>
void main(){
float *x1,y,
*x2;
clrscr();
y = 13.45;
x1 = &y; //
Alamat dari y disalin ke variabel x1
x2 = x1; //
Isi variabel x1 disalin ke variabel x2
cout<<"Nilai
variabel y = "<<y<<
" ada di alamat "<< x1<<"\n";
cout<<"Nilai
variabel y = "<<y<<
" ada di alamat "<< x2<<"\n";
getch();
}
Ø Operasi
Aritmatika
Suatu
variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan
adalah operasi penambahan dan pengurangan.
Operasi
penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga
operasi pengurangan.
//Contoh Program
#include
<iostream.h>
#include
<conio.h>
void main()
{ int
nilai[3], *penunjuk;
clrscr();
nilai[0] =
125;
nilai[1] =
345;
nilai[2] =
750;
penunjuk =
&nilai[0];
cout<<"Nilai "<<*penunjuk
<<" ada di alamat memori "
<<penunjuk<<"\n";
cout<<"Nilai
"<<*(penunjuk+1) <<" ada di alamat memori "
<<penunjuk+1<<"\n";
cout<<"Nilai
"<<*(penunjuk+2) <<" ada di alamat memori "
<<penunjuk+2<<"\n";
getch();
}
Ø Operasi Logika
Suatu
pointer juga dapat dikenai operasi logika.
//Contoh Program
#include<iostream.h>
#include
<conio.h>
void main(){
int a = 100,
b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai
pa= "<<pa<< " nilai pb=
"<<pb<<"\n";
if(pa <
pb)
cout<<"pa
menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout<<"pa
menunjuk ke memori yang sama dengan pb\n";
if(pa >
pb)
cout<<"pa
menunjuk ke memori lebih tinggi dari pb\n";
getch();}
2. PENGERTIAN
REFERENSI
Referensi digunakan
untuk memberikan nama alias dari variable. Dalam hal pengelolaan variabel dan
parameter, C++ juga menyediakan reference variable, dan call by reference.
Reference ke suatu variabel adalah nama alias terhadap variable tersebut.
Reference berbeda dengan pointer. Jika sudah digunakan untuk mengacu suatu
objek/variabel, reference tidak dapat direset untuk mengacu objek/variabel
lain. Fasilitas ini dapat dimanfaatkan untuk memberikan alias terhadap suatu
variabel yang mempunyai nama yang panjang (misalnya karena berada dalam
struktur yang berlapis-lapis).
int x = 5;
int &xr = x; // xr mengacu pada
x
xr++; // xr merupakan alias dari x
Penggunaan
reference yang lain adalah untuk call by reference dan return value dari
sebuah
fungsi. Dengan demikian, dalam bahasa C++ simbol & digunakan dengan dua
makna, yaitu sebagai address-of dan reference2. Setiap pende_nisian variabel
referensi harus selalu diinisialisasi oleh variabel lain. Dalam contoh di atas,
variabel xr tidak berisi alamat darix, seperti halnya pada
int *py;
int &yr; // error (tidak
diinisialisasi)
int y;
py
= &y; // py akan berisi alamat dari y
Ø Tanda
“&” mengawali nama referensi.
Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini.
Contoh program :
//*-----------------------------------------------------*
//* Contoh 5.9 : contoh referensi *
//*-----------------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main() {
int i ;
int &r = 1; // Deklarasi referensi
clrscr();
Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini.
Contoh program :
//*-----------------------------------------------------*
//* Contoh 5.9 : contoh referensi *
//*-----------------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main() {
int i ;
int &r = 1; // Deklarasi referensi
clrscr();
i =10;
cout << “i = “ << i << endl;
cout << “ r = “ << r << endl;
r = 55;
cout << “i = “ << i << endl;
cout << “ r = “ << r << endl;
getch();
}
}
0 komentar
Posting Komentar