Anda di halaman 1dari 5

Pointer dan ADT

I. Tujuan
1. Memahami konsep pointer di dalam Bahasa C
2. Memahami konsep copy value dan copy address
3. Menggunakan pointer di dalam program lainnya

II. Dasar Teori


Pointer
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari
suatu variabel lain. Lokasi memori tersebut mungkin diwakili oleh sebuah variabel atau
mungkin juga lokasi bebas dalam memori. Sedangkan pointer sendiri yang berupa nilai
ditampung dalam sebuah variabel yang disebut variabel pointer. Jadi variable pointer atau
pointer berisi suatu nilai yang menyatakan alamat suatu lokasi.
Suatu variable pointer didefinisikan dengan bentuk :

Contoh :
a

*c

*d

Var

Value

Address

TipeData *NamaVariabel
Step :
1. d=&a *d = 2 ; d = A
2. c=&b *c = 3 ; c = B
3. b=*d b = 2 ; &b = B
4. *d=*c *d = 2 ; d = A
Dari contoh di atas terlihat bahwa addres pada variabel pointer dapat berubah
ubah, apabila addres suatu variabel pointer berubah maka valuenya akan berubah sesuai

1: #include<iostream.h>
2: #include<conio.h>
3: void main()
4: {
5: int x;
6: float y;
7: long z;
8:
9: x = 3;
10: y = 3.7;
11: z = 1000;
12:
13: cout<<"isi variabel x = "<<x<<endl;
14: cout<<"isi variabel y = "<<y<<endl;
15: cout<<"isi variabel z = "<<z<<endl;
16:
17: cout<<endl;
18:
19: cout<<"alamat variabel x = "<<&x<<endl;
20: cout<<"alamat variabel y = "<<&y<<endl;
21: cout<<"alamat variabel z = "<<&z<<endl;
22:}

VariabelPointer = (TipeData *) malloc(sizeof(TipeData));


Contoh program :
1: #include<iostream.h>
2: #include<conio.h>
3: #include<malloc.h>
4:
5: void main()
6: {
7: int *p;
8:
9: p =(int *)malloc(sizeof(int));//membuat alamat
10:
11: *p=5;//deklarasi nilai
12:
13: cout<<"isi P "<< *p<<endl;
14: cout<<"alamat P "<<p<<endl;
15: }

Pemberian Memori Alokasi Pada Pointer


Sebuah pointer itu tidak memiliki alamat, sehingga pointer harus menumpang pada
variabel lain. Namun sekarang kita memberikan alamat kepada variabel pointer sehingga

ADT adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap
TYPE tersebut. Selain itu, dalam sebuah ADT yang lengkap, disertakan pula definisi invarian
dari TYPE dan aksioma yang berlaku. ADT merupakan definisi statik. Definisi type dari
sebuah ADT dapat mengandung sebuah definisi ADT lain.
Misalnya:
terdiri dari ADT JAM dan ADT DATE

Type diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan,


misalnya menjadi record dalam bahasa Ada/Pascal atau struct dalam bahasa C. Primitif,
dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedur.

Primitif dikelompokkan menjadi :

melalui konstruktor. Biasanya namanya diawali Make.

biasanya namanya diawali Get)

sesuai dengan batasan

penyimpannya)
terface dengan input/output device

dengan, dsb

terdefinisi untuk bilangan numerik

#include<iostream.h>
typedef struct lingkaran{
float r;
float keliling;
float luas;
};
void kllluas(lingkaran &L);
void main()
{
lingkaran L;
cout<<"masukkan jari-jari :";
cin>>L.r;
kllluas (L);
cout<<" keliling "<<L.keliling<<endl;
cout<<" luas "<<L.luas;
}
void kllluas(lingkaran &L)
{
L.keliling = 2*3.14*L.r;
L.luas =3.14*L.r*L.r;
}

Prosedur : Initial State, Final State dan Proses yang dilakukan


bersangkutan.
Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan selektor dan konstruktor.

Sebuah contoh pendeklarasian struktur dapat dilihat dibawah ini :


struct data_tanggal
{
int tahun;
int bulan;
int tanggal;
};
Anggota struktur diakses dengan menggunakan bentuk :
variabel_struktur.nama_anggota

IV. Kegiatan Praktikum


1. Terjemahkan prototipe/primitive kasus pointer di berikut ini ke dalam bahasa C dengan
langkah-langkah :
a. d=&a
b. c=a
c. e=&b
d. b=c
e. *d=c

Prototipe dan
Primitif / Algoritma

*d

*e

var

value
address

Anda mungkin juga menyukai