Algoritma Lanjut Pertemuan 12

Download Report

Transcript Algoritma Lanjut Pertemuan 12

Pointer
1
 Variabel pointer sering disebut sebagai variabel yang
menunjuk obyek lain, karena variabel pointer atau pointer
adalah variabel yang berisi alamat di memori
komputer dari suatu obyek lain, yaitu obyek yang
ditunjuk oleh pointer
 Penerapan pointer yang paling umum yaitu menciptakan
variable dinamis, yang memungkinkan untuk memakai
memori bebas (memori yang belum dipakai) selama
eksekusi program.
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
Deklarasi
2
Algoritma (Pseodocode) :
nama_pointer : pointer to tipedata
C++ :
Ilustrasi :
tipedata
*nama_pointer;
(deklarasi pointer null)
nama_pointer
nama_pointer =
(tipedata *) malloc(size_t size);
(deklarasi pointer kosong)
nama_pointer
(isi)null
(alamat)
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
Contoh
Algoritma (Pseodocode) :
p : pointer to integer
nilai : pointer to real
s : pointer to char
C++ :
int *p;
float *nilai;
char *s;
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
3
Deklarasi sebuah pointer kosong pada
memory pada C++
4
*malloc(size_t size)
 Contoh:
int *p; int *q;
p=(int *) malloc(sizeof(int));
q=(int *) malloc(sizeof(int));
p
p
(isi)null
(alamat)
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
Pengaksesan dengan pointer
5
 untuk mengakses nilai/isi pada memori yang
ditunjuk oleh pointer dipakai simbol ‘*’
 Contoh :
*p = 10;
*q = 20;
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
Pointer menunjuk memori yang ditunjuk
pointer lain
6
 Contoh :
p = q;
 berarti p menunjuk ke alamat memori yang ditunjuk
oleh q, dan dengan demikian p dan q menunjuk
alamat memori yang sama.
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
ilustrasi :
7
*p = 10
*q = 20
p
q
10
p=q
p
10
q
20
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
20
//contoh program Pointer1.cpp
#include <iostream.h>
Output :
8
#include <alloc.h>
#include <stdlib.h>
void main()
{
int *p, *q;
p=(int *)malloc(sizeof(int));
q=(int *)malloc(sizeof(int));
*p=10;
*q=20;
cout<<"Isi info pointer :\n";
cout<<"*p = "<<*p<<endl;
cout<<"*q = "<<*q<<endl;
cout<<"\nAlamat register pointer :\n";
cout<<"p = "<<p<<endl;
cout<<"q = "<<q<<endl;
p=q;
cout<<"\nKondisi akhir isi info pointer :\n";
cout<<"*p = "<<*p<<endl;
cout<<"*q = "<<*q<<endl;
}
Sumber Kepustakaan : www.mdp.ac.id/...1/.../SP244042092-597-23.ppt -
9
Pointer menunjuk variabel
statis
Misalkan px adalah variabel bertipe pointer
yang akan berisi alamat variabel lain yang
bertipe integer, maka dideklarasikan :
int x;
int *px;
Untuk mengatur pointer agar menunjuk ke
variabel lain, mula-mula pointer harus diisi
dengan alamat dari variabel yang akan
ditunjuk.
Operator ‘&’ digunakan untuk menyatakan
alamat variabel statis yang akan ditunjuk.
Contoh :
px = &x;
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-23.ppt -
ilustrasi
10
int *px;
int x=10;
px
x
10
px = &x
px
x
10
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-23.ppt -
Jika suatu variabel statis sudah ditunjuk oleh
pointer, isi variabel tersebut dapat diakses
11
melalui variabel itu sendiri (pengaksesan
langsung) atau melalui pointer
(pengaksesan tidak langsung).
pengaksesan langsung dilakukan langsung
oleh variabel statisnya (bukan pointernya).
Contoh :
x = 10
Operator indirection (pengaksesan tidak
langsung), berupa simbol ‘*’
Contoh :
*px = 10
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-23.ppt -
Contoh lain:
12
value1 = 5;
value1
5
mypointer = &value1;
mypointer
*mypointer = 10;
mypointer
value1
5 10
x
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-23.ppt -
value1
5
//contoh program Pointer2.cpp
13
#include<iostream.h>
main()
{ int value1 = 5, value2 = 15;
int * mypointer;
mypointer = &value1;
*mypointer = 10;
cout << "\nvalue1 = " << value1;
cout << “\n*mypointer = " << *mypointer;
mypointer = &value2;
*mypointer = 20;
cout << "\nvalue2 = " << value2;
cout << "\n*mypointer = "<<*mypointer;
}
Output :
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-
//contoh program Pointer3.cpp
#include <iostream.h>
14
main()
{
int x,y; //x dan y bertipe int
int *px; //deklarasi px, pointer yang menunjuk obyek
//bertipe int
a
x=87;
b px=&x;
//px berisi alamat dari x
y =*px;
//y berisi nilai yang ditunjuk px
c
cout<<"alamat x= "<<&x<<endl;
cout<<"nilai x= "<<x<<endl;
cout<<"alamat yang ditunjuk oleh px= "<<px<<endl;
cout<<"nilai yang ditunjuk oleh px= "<<*px<<endl;
cout<<"alamat y= "<<&y<<endl;
cout<<"nilai y= "<<y;
}
Output :
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-
15
2
x=87;
b
px
px = &x;
x
87
y=*px;
y
87
Sumber Kepustakaan :
www.mdp.ac.id/...1/.../SP244-042092-597-23.ppt -
a
c