BAB II
POINTER
PENYUSUN :
Zakaria Annas
(123090182)
Plug : 6
Asisten Dosen : Henry Tri P.
Co.Asisten : Agus Gunawan
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” YOGYAKARTA
2010
DASAR TEORI
pointer adalah built-in
type di C dan C++, dimana C++ mengambil konsep pointer dari C. Pointer
sebenarnya sangat terkait dengan "Abstract C Machine", yaitu model
mesin abstrak dimana program C bekerja. Abstract C Machine
adalah mesin abstrak dimana mesin tersebut memiliki prosesor untuk
menginterpretasikan stream of instruction, dan addressable memory yang terbagi
kedalam 3 bagian : automatic memory, static memory dan free memory. Addressable
memory adalah memory yang konten-nya dapat diambil jika diketahui alamatnya.
Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil dengan
waktu konstan, tidak peduli berapa nilai alamat.Hal ini disebut dengan random cces memori
Jika variabel
merupakan isi memori, dan untuk mengakses isi memori tersebut diperlukan
address, lalu bagaimana cara kita mengetahui alamat dari suatu variabel ?
Jawabannya adalah : untuk kebanyakan kasus kita sama sekali tidak perlu tahu
alamat dari sebuah variabel. Untuk mengakses sebuah variabel kita hanya perlu
nama dari variabel tersebut. Tugas kompiler lah yang mentranslasikan nama ke
alamat mesin yang diperlukan
Akan tetapi terdapat beberapa kasus dimana kita tidak mungkin memberi nama pada sebuah entitas di program kita. Hal ini terjadi terutama saat kita menggunakan data struktur dinamis seperti linked list, resizeable array, tree dan lain sebagainya. Hal ini karena kita tidak mungkin memberi nama terhadap entitas yang mungkin ada atau tidak ada. Struktur seperti linked list hampir mustahil dibuat tanpa pointer tanpa harus mendefinisikan list
Akan tetapi terdapat beberapa kasus dimana kita tidak mungkin memberi nama pada sebuah entitas di program kita. Hal ini terjadi terutama saat kita menggunakan data struktur dinamis seperti linked list, resizeable array, tree dan lain sebagainya. Hal ini karena kita tidak mungkin memberi nama terhadap entitas yang mungkin ada atau tidak ada. Struktur seperti linked list hampir mustahil dibuat tanpa pointer tanpa harus mendefinisikan list
Inilah awal mula penggunaan pointer
sebagai moniker. Istilah moniker di sini berarti sesuatu yang menunjuk atau
mengacu kepada entitas lain. Istilah moniker ini bukanlah istilah standard dan
lazim , tetapi sesuatu yang saya pilih impromptu untuk membedakan dengan
pointer atau reference yang sudah memiliki arti
tersendiri.
Penggunaan lain pointer sebagai moniker adalah untuk mengatasi kelemahan bahasa C awal : Dahulu fungsi - fungsi di C hanya mengerti pass by value. Pointer digunakan untuk mengemulasi pass by reference karena pointer berisi alamat ke objek lain, sehingga fungsi tersebut dapat mengubah objek tersebut dengan memanipulasi pointer.
Penggunaan lain pointer sebagai moniker adalah untuk mengatasi kelemahan bahasa C awal : Dahulu fungsi - fungsi di C hanya mengerti pass by value. Pointer digunakan untuk mengemulasi pass by reference karena pointer berisi alamat ke objek lain, sehingga fungsi tersebut dapat mengubah objek tersebut dengan memanipulasi pointer.
PEMBAHASAN
#include
<iostream>
using
namespace std;
using
std::endl;
int main()
{
int x,y;
int *px;
x=87;
px=&x;
y=*px;
cout
<< "Alamat x = " << &x << endl;
cout
<< "Isi px = "
<< px << endl;
cout
<< "Isi x = "
<< x << endl;
cout
<< "Nilai yang ditunjuk oleh px = " << *px <<
endl;
cout
<< "Nilai y = "
<< y << endl;
}
|
Output :
Penjelasan
:
Program
pointer dengan variable x ,y dan *px dengan type integer. Int *px merupakan
pointer yang menunjukan objek. Alamat berisi alamat dari &x
Isi
px berisi alamat dari px
Isi
x berisi nilai dari x
Nilai
yg ditunjuk oleh px berisi nilai dari *px yang berasal dari nilai x
Nilai
y berisi nilai dari *px
#include
<iostream>
#include
<malloc.h>
using
namespace std;
using
std::endl;
int main()
{
int *p, *q,
*r;
int n=10;
p=(int
*)malloc(sizeof(int));
q=(int
*)malloc(sizeof(int));
p=&n;
*q=120;
r=p;
cout
<< "Isi info pointer \n";
cout
<< "*p = " <<
*p << endl;
cout
<< "*q = " <<
*q << endl;
cout
<< "*r = " <<
*r << endl;
cout
<< "\nalamat register pointer : \n";
cout
<< "p = " << p
<< endl;
cout
<< "q = " << q
<< endl;
cout
<< "r = " << r
<< endl;
n=*q;
p=q;
cout
<< "\nkondisi akhir isi info pointer :\n";
cout
<< "n = " <<
n << endl;
cout
<< "*p = " <<
*p << endl;
cout
<< "*q = " <<
*q << endl;
cout
<< "*r = " <<
*r << endl;
}
|
Output :
Penjelasan
:
Program pointer
dengan variable
*p, *q, *r dan variable
n yang
bernilai 10. Malloc
berfungsi
untuk mendeklarasikan
sebuah
pointer kosong pada
memori.
#include
<iostream>
using
std::cout;
int main()
{
int a = 100,
b = 200, *pa,*pb;
pa
= &a;
pb = &b;
if (pa <
pb)
cout
<< "pa menunjuk ke memori lebih rendah dari pb\n";
if (pa ==
pb)
cout
<< "pa menunjuk ke memori yang sama dengan dari pb\n";
if (pa >
pb)
cout
<< "pa menunjuk ke memori lebih tinggi dari pb\n";
}
|
Output :
Penjelasan
:
Program
pointer dengan variable a bernilai 100, b bernilai 200, *pa, *pb.
Pa
= &a -> menuju ke alamat a
Pb
= &b -> menuju ke alamat b
Dengan
system perulangan untuk mencari memori yang besar, sama besar, atau kecil
#include
<iostream>
using
namespace std;
int main ()
{
int nilai
[3], *penunjuk;
nilai [0] =
125;
nilai [1] =
345;
nilai [2] =
750;
penunjuk =
&nilai [0];
cout
<< "Nilai " << *penunjuk << "ada di alamat
memori "<< penunjuk << endl;
cout
<< "Nilai " << *(penunjuk+1) << "ada di
alamat memori "<< penunjuk+1 << endl;
cout
<< "Nilai " << *(penunjuk+2) << "ada di
alamat memori "<< penunjuk+2 << endl;
}
|
Output :
Penjelasan
:
Program
pointer dengan array yang memiliki variable nilai [3] dan *penunjuk.
Masing-masing nilai memiliki nilai sendiri.
Penunjuk
= &nilai [0] -> menuju ke alamat masing-masing nilai
*penunjuk
= &nilai [0] -> menuju isi dari nilai
Penunjuk+1
-> menuju alamat nilai 1 dari alamat nilai o tambah 1
*penunjuk+1
-> menuju isi nilai 1 dari isi nilai nilai 0 tyambah 1
KESIMPULAN
Pointer banyak dilibatkan dalam
pemrograman c++ misal untuk melewatkan string suatu fungsi ke fungsi yang lain.
Pointer cara untuk mengubah nilai suatu variable yang dilewatkan ke dalam suatu
fungsi. Penerapan pointer yang paling umum untuk menciptakan variable dinamis
yang memungkinkan memori bebas selama eksekusi program. Variable dapat disebut
juga sebagai variable yang menunjukan obyek lain karena variable pointer atau
pointer adalah variable yangh berisi alamat dari suatu objek lain
0 Response to "Pemrograman C++ Variable Pointer Lengkap"
Post a Comment