Popular Posts

Kamis, 18 Oktober 2012

PERBEDAAN POINTER DENGAN REFERENSI



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(); 

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