Thursday 24 February 2011

Dasar Teori

Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana pada
variable yang sudah anda kenal. Pointer (variabel penunjuk) adalah suatu variabel yang
berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek
lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat
dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.
Operator Pointer ada dua, yaitu :

1. Operator & (Dereference Operator)
Operator & menghasilkan alamat dari operandnya.

Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi

memori dan pengguna biasanya tidak mengetahui di alamat mana data
tersebut disimpan. Dalam C++, untuk mengetahui alamat tempat
penyimpanan data, dapat digunakan tanda ampersand(&) yang dapat
diartikan “alamat”. Contoh :
Bil1 = &Bil2;
dibaca: isi variabel bil1 sama dengan alamat bil2

2. Operator * (Reference Operator)
Operator * menghasilkan nilai yang berada pada sebuah alamat.

Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang

ditunjuk oleh variabel pointer. Contoh :
Bil1 = *Bil2;
dibaca: bil1 sama dengan nilai yang ditunjuk oleh bil2
Mendefinisikan Variabel Pointer
Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut:

tipe_data *nama_variabel;
tipe_data dapat berupa sebarang tipe seperti halnya pada pendefinisian variabel

non-pointer.
nama_variabel adalah nama variabel pointer.

Contoh :
int * pint ; // pointer ke int
char *pch; // pointer ke char
char *pch1, *pch2;

Guided 1.

//contoh program menggunakan pointer
#include
#include
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 pd Memori = "<<&x<<<"Isi px = "<<<<"Isi x = "<<<<"Nilai yang ditunjuk oleh px = "<<*px<<<"Alamat y pd Memori = "<<&y<<<"Nilai y = "<<

Guided 2.
//mengubah nilai melalui suatu pointer
#include
#include
void main()
{
int vint = 55; //variabel bukan pointer
int *pint; //variabel pointer
clrscr();
cout<<"vint semula = "<<<<"vint sekarang = "<<

Penjelasan :
Pernyataan *pint = 69;
Menyebabkan yang ditunjuk oleh pint (yaitu vint) berubah menjadi 69

Guided 3.
//operasi aritmatika pada pointer
#include
#include
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 "<<<<"Nilai "<<*(penunjuk+1)<<" ada di alamat memori "<<(penunjuk+1)<<<"Nilai "<<*(penunjuk+2)<<" ada di alamat memori "<<(penunjuk+2)<


1. Pointer dan Array

Pointer dan array mempunyai hubungan yang dekat. Secara internal array juga
menyatakan alamat. Misalnya didefinisikan :
char data1[] = {”A”, ”I”, ”U”, “E”, “O”};
dan :
char *pdata;
agar pdata menunjuk ke array, diperlukan pernyataan berupa :
pdata = data1;
Perhatikan dengan seksama program diatas. Tidak ada tanda & di depan data1.
padahal kita ketahui untuk mengakses pointer memerlukan format berikut:
Ptr = &variabel;
Ini disebabkan array sebenarnya sudah menyatakan alamat. Oleh karena itu tanda
& tidak diperlukan. Tanda & digunakan jika variabel tidak berupa array.

//guided 1
//mengakses elemen array via pointer
#include
#include
void main()
{
char data1[] = {'A', 'I', 'U', 'E', 'O'};
clrscr();
char *pdata;
pdata = data1; // pdata menunjuk ke array
for (int i=0; i<5;>

Seluruh elemen array data1 dapat ditampilkan juga melalui pernyataan :
for (int i=0; i<5;><<" "; }

Memberi nilai pada array
//memberi nilai suatu data array
#include
#include
int main()
{
int x[5], *p, k;
clrscr();
p = x;
x[0] = 5; // x[0] diisi dengan 5 sehingga
x[0] = 5
x[1] = x[0]; // x[1] diisi dengan x[0]
sehingga x[1] = 5
x[2] = *p + 2; // x[2] diisi dengan x[0] + 2
sehingga x[2] = 7
x[3] = *(p+1)-3; // x[3] diisi dengan x[1] - 3
sehingga x[3] = 2
x[4] = *(x + 2); // x[4] diisi dengan x[2]
sehingga x[4] = 7
cout<<"Array Stelah diisi = "<<<5;><<"] = "<<


2. Pointer dan String

//pointer menunjuk ke string
#include
#include
void main()
{
clrscr();
char *ptr = "STIKOM";
cout<<


Pada contoh diatas :
char *ptr = "STIKOM";
akan menyebabkan C++ :
Mengalokasikan ptr sebagai variable pointer yang menunjuk ke data

bertipe char dan menempatkan konstanta string “STIKOM” ke suatu
lokasi di memori komputer
Kemudian ptr akan menunjuk ke lokasi string “STIKOM”

Pernyataan di atas menyerupai pernyataan :
Char vptr[] = ”STIKOM”;
Perbedaanya :
ptr adalah pointer yang dengan mudah dapat diatur agar menunjuk ke data

string
vptr adalah array yang menyatakan alamat yang konstan, tidak dapat

dirubah. Yang dapat diubah adalah elemen array-nya.
Perbedaan ini ditunjukkan oleh program berikut :

//pointer menunjuk ke string
#include
#include
void main()
{
clrscr();
char *ptr = "STIKOM";
char vptr[] = "STIKOM";
cout<<"vptr = "<<<<"ptr = "<<<<"ptr sekarang = "<


3. Pointer dan Function

#include
#include
void proses(char *);
void main()
{
char string[] = "characters";
clrscr();
cout<<"String sebelum proses adalah "<<<<"String setelah proses adalah "<<= 'a' && *s <= 'z' ) *s -= 32; ++s; } }






0 komentar:

Post a Comment

Iklan

rss


Translate

Chat

Komentar Blog

Iklan