Pointer Dalam Bahasa C++
Pointer (variabel penunjuk) adalah suatu variabel yang
berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari
variabel lain di dalam memori. Dengan kata lain, pointer berisi alamat dari
variabel yang mempunyai nilai tertentu.
Suatu pointer di dalam program dimaksudkan untuk menunjuk ke
suatu alamat memori. Misalnya suatu variabel X yang bertipe int dengan nilai 12
dan disimpan di memori pada alamat 0xfff2, P adalah pointer yang disimpan dalam
alamat memori 0xfffA maka nilai yang ada didalam alamat 0xfffA adalah alamat
dari variabel X yaitu 0xfff2.
Operator Pointer
Suatu pointer dapat berisi alamat dari suatu variabel lain
dan untuk dapat mengakses nilai yang ada di dalam variabel berpointer secara
langsung dapat dilakukan dengan menggunakan operator. Ada dua operator pointer
yang disediakan oleh Borland C++, yaitu:
- Operator Deference ( & )
- Operator reference ( * )
1. Operator Deference ( & )
Pada umumnya kita tidak dapat menentukan di mana variabel
akan ditempatkan dalam memori, karena penempatan suatu variabel ditentukan oleh
sistem operasi. Untuk suatu keperluan tertentu terkadang kita harus mengetahui
alamat suatu variabel di dalam memori. Dengan demikian, untuk dapat mengetahui
alamat suatu variabel di dalam memori kita dapat melakukannya dengan
menggunakan operator deference (
& ) atau operator alamat (address
operator) di depan nama variabel yang alamatnya akan diketahui. Operator & bersifat unary (hanya melakukan
satu operand saja) dan Operator &
menghasilkan alamat dari operandnya. Untuk memperoleh alamat dari suatu variabel
dapat kita lakukan dengan bentuk:
Nama_var_pointer =
&variabel;
Sebagai contoh, misalkan deklarasi sebagai berikut:
int x =
8;
int *xPtr;
Misalkan x yang bernilai 8 disimpan di memori pada alamat 0x0012ff50. xPtr disimpan dalam memori
pada alamat 0x0012ff4c yang
berisi alamat dari variabel x. Sehingga untuk mengetahui nilai yang ada pada
alamat yang disimpan oleh xPtr dapat kita lakukan seperti pernyataan berikut
dan nilai variabel dapat kita lihat pada Gambar 1.
xPtr = &x;
Gambar 1. Nilai dan Alamat Variabel di Memori
/* Program Pointer
*/
#include<iostream.h>
#include<conio.h>
void main()
{
int x=8;
int *xPtr;
xPtr = &x;
cout<<"Nilai x =
"<<x<<endl;
cout<<"Alamat x =
"<<x<<endl;
cout<<"Alamat x =
"<<xPtr<<endl;
cout<<"Nilai yang disimpan pada
alamat ";
cout<<xPtr<<" adalah
"<<*xPtr;
getch();
}
2. Operator Reference ( * )
Digunakan untuk mengakses secara langsung nilai yang
terdapat di dalam alamat yang merupakan nilai dari variabel pointer. Dilakukan
dengan menambahkan operator reference ( * ) di depan nama variabel, agar dapat
menerjemahkan nilai sebenarnya dari suatu variabel. Operator ini biasa disebut
dengan value pointed by. Dengan
menggunakan operator * ini akan dihasilkan nilai yang berada pada suatu alamat
memori. Operator * bersifat unary (hanya memerlukan satu operand saja).
Sebagai contoh, misalkan deklarasi sebagai berikut:
int x
=8, y;
int *Ptr;
Misalkan x yang bernilai 8 disimpan di memori pada alamat 0x0012ff50, xPtr disimpan dalam memori
pada alamat 0x0012ff4c yang berisi alamat dari variabel x. Untuk mengetahui
nilai yang ada pada alamat yang disimpan oleh xPtr dapat kita lakukan seperti
pernyataan berikut dan nilai variabel dapat kita lihat pada gambar 2.
y = *xPtr;
Gambar 2. Nilai dari Alamat yang Disimpan Variabel Pointer
/* Program Pointer */
#include<iostream.h>
#include<conio.h>
void main()
{
int x=8, y;
int *xPtr;
xPtr = &x;
y = *xPtr;
cout<<"Nilai x =
"<<x<<endl;
cout<<"Alamat x =
"<<x<<endl;
cout<<"Alamat x =
"<<xPtr<<endl;
cout<<"Nilai yang disimpan pada
alamat ";
cout<<xPtr<<" adalah
"<<y;
getch();
}
Deklarasi Pointer
Seperti halnya variabel yang lain, variabel pointer juga
harus dideklarasikan terlebih dahulu sebelum digunakan.
Bentuk Umum:
tipe_data
*nama_var_pointer
dimana:
-
tipe_data dapat berupa sebarang tipe seperti
haknya pada pendeklarasian variabel bukan pointer
-
nama_var_pointer adalah nama variabel pointer
yang menunjuk ke data bertipe tipe_data
Contoh:
int *xPtr;
char *Karakter;
mendeklarasikan xPtr merupakan variabel pointer yang
menunjuk ke data bertipe int dan
Karakter merupakan variabel pointer yang menunjuk ke data bertipe char.
Tipe data pointer mendefinisikan tipe dari objek yang
ditunjuk oleh pointer. Secara teknis, tipe appa pun dari pointer dapat
menunjukkan lokasi (di manapun) dalam memori. Bahkan operasi pointer dapat
dilaksanakan relatif terhadap tipe dasar apa pun yang ditunjuk.
Contoh, ketika kita mendeklarasikan pointer dengan tipe
int*, kompiler akan menganggap alamat yang ditunjuk menyimpan nilai integer –walaupun
sebenarnya bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke
sebuah objek bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum
mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe objek yang
akan ditunjuk.
Pointer dan Array
Pointer dan Array mempunyai hubungan yang dekat. Secara
internal array juga menyatakan alamat, dimana pengenal array sama dengan alamat
pada elemen pertama pada array. Jika kita mau mengisi alamat suatu variabel ke
dalam suatu variabel pointer maka dapat dilakukan dengan menggunakan operator
&, misalnya xPtr = &x, yang berarti mengisi xPtr dengan alamat dari
variabel x. Hal ini berlaku hanya untuk variabel yang bukan variabel array.
Tetapi jika variabel array tidak perlu menggunakan operator &.
Misalnya kita mempunyai suatu deklarasi berikut:
int Nilai[]={45, 23, 50, 8, 12, 10, 15};
int *Ptr_Nilai;
agar Ptr_Nilai menunjuk ke array Nilai, maka diperlukan
pernyataan berikut:
Ptr_Nilai = Nilai;
Hal ini disebabkan karena nama array sebenarnya sudah
menyatakan pointer. Oleh sebab itu operator & tidak diperlukan lagi.
/* Program Pointer dan Array*/
#include<iostream.h>
#include<conio.h>
#include<iostream.h>
main()
{
int Nilai[]={45, 23, 50, 8, 12, 10, 15};
int *Ptr_Nilai;
int i;
Ptr_Nilai = Nilai;
cout<<"\nNilai Ptr_Nilai : "<<Ptr_Nilai;
cout<<"\nAlamat array Nilai : "<<Ptr_Nilai;
cout<<"\nNilai yang ada pada
alamat "<<Ptr_Nilai<<"adalah <<*Ptr_Nilai;
cout<<"\nElemen array indeks
pertama : "<<Nilai[0];
cout<<\n\nElemen Array (dgn Array) :
";
for(i=0;i<7;i++)
cout<<Nilai[i]<<"
"; //mencetak elemen array
cout<<"\n\nElemen Array (dgn
pointer) : ";
for(i=0;i<7;i++)
cout<<*(Nilai+i)<<"
"; //mencetak elemen array
getch();
}
Dari program di atas terlihat bahwa cout<<Nilai[i] sama artinya dengan cout<<*(Nilai +i). Pernyataan cout<<*(Nilai+i) artinya adalah Nilai+(ukuran tipe elemen Nilai)*i.
Pointer Pada Pointer
Variabel pointer menunjuk alamat suatu variabel. Di samping
itu suatu variabel pointer juga dapat menunjuk ke variabel pointer lainnya.
Dalam hal ini dilakukan dengan cara menambahkan operator reference ( * ) pada
variabel yang akan ditunjuk.
Contoh: misalkan kita mempunyai deklarasi seperti berikut
ini.
int Var_x;
int
*xPtr1;
int
**xPtr2;
Artinya:
- Var_x adalah variabel bertipe int
- *xPtr1 adalah variabel pointer yang menunjuk ke data bertipe int
- **xPtr2 adalah variabel pointer yang menunjuk ke pointer int
Di atas telah kita lihat bahwa agar xPtr1 menunjuk ke variabel Var_x
dapat dilakukan dengan perintah:
xPtr1 = &Var_x;
Supaya xPtr2 juga
dapat menunjuk ke xPtr1 dapat
dilakukan dngan perintah:
xPtr2 = &xPtr1;
Karena xPtr2
telah menunjuk atau berisi alamat xPtr1
dan xPtr1 menunjuk atau berisi
alamat dari variabel Var_x, maka
untuk mengakses nilai dari Var_x
dapat dilakukan dengan perintah:
cout<<Var_x;
cout<<*xPtr1;
cout<<**xPtr2;
/* Program Pointer
pada Pointer */
#include<iostream.h>
#include<conio.h>
void main()
{
int x=8;
int *xPtr1;
int **xPtr2;
xPtr1 = &x;
xPtr2 = &xPtr1
cout<<"Nilai x =
"<<x<<endl;
cout<<"Nilai x =
"<<*xPtr1<<endl;
cout<<"Nilai x =
"<<**XPtr2<<endl;
getch();
}
Pointer Dalam Bahasa C++
Reviewed by M
on
14:19:00
Rating:
good job gan
ReplyDeletesolder uap