POINTER


Defenisi :

• 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

Cont.

• Suatu pointer di dalam program dimaksudkan untuk

menuntuk ke suatu alamat memori. Misalnya suatu

variabel N 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 N 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 Dereference ( & ) Operator reference ( * )

Operator Deference ( & )

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

Nama_var_pointer = &variabel;

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 berikut :

Ptr = &x;

#include<iostream>

#include<conio.h>

using namespace std;

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

}

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

suatu operand saja).

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. 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 dibawah.

y = *xPtr;

Int 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.

tipe_data *nama_var_pointer;

dimana:

•tipe_data dapat berupa sebarang tipe seperti halnya 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 dapat bertipe char.

Tipe data pointer mendefinisikan tipe dari objek yang ditunjuk oleh pointer. Secara teknis, tipe

apa pun dari pointer dapat menunjukkan lokasi (di manapun) dalam memori. Bahkan operasi

pointer dapat dilaksanakan relatif terhadap tipe dasar apa pun yang 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 &.

Contoh 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.

#include<iostream>

#include<conio.h>

#include<stdio.h>

using namespace std;

int 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<<"\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();

}

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.

int Var_x;

int *xPtr1;

int **xPtr2;

•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 xPtr menunjuk ke variabel Var_x dapat dilakukan dengan perintah:

xPtr1 = &Var_x;

Supaya xPtr2 juga dapat menunjuk ke xPtr1 dapat dilakukan dengan 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;

{

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

}

Komentar

Postingan populer dari blog ini

Cara Menambahkan Audio Di Html

Cara Menampilkan File PDF di Html