Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.
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 :
ØOperator &
Operator
& bersifat unary (hanya memerlukan satu operand saja).
Operator
& menghasilkan alamat dari operandnya.
ØOperator *
Operator
* bersifat unary (hanya memerlukan satu operand saja).
Operator
* menghasilkan nilai yang berada pada sebuah alamat.
2 DEKLARASI POINTER
Seperti
halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan.
Bentuk
Umum :
Tipe_data *nama_pointer;
//Contoh9_1
int *px;
char *sh;
Contoh Program :
#include “IOSTREAM.h”
#include “conio.h”
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 =”<<&x
<<\n”;
cout<<“Isi px = \n”, px);
cout<<“Isi x = \n”, x);
cout<<“Nilai yang ditunjuk oleh px =
\n”, *px);
cout<<“Nilai y = \n”, y);
getch();
}
3
OPERASI POINTER
ØOperasi Penugasan
Suatu
variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi
penugasan.
Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.
//Contoh9_2
#include "iostream.h"
#include "conio.h"
void main()
{ float *x1,y, *x2;
clrscr();
y = 13.45;
x1 = &y;
/* Alamat dari y disalin ke variabel x1 */
x2 = x1; /*
Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y ="<<y<< " ada di alamat
"<< x1<<"\n";
cout<<"Nilai variabel y ="<<y<< " ada di alamat
"<< x2<<"\n";
getch();
}
ØOperasi Aritmatika
Suatu
variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja.
Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi
penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya)
dalam memori. Begitu juga operasi pengurangan.
//Contoh9_3
#include <iostream.h>
#include <conio.h>
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 "
<<penunjuk<<"\n";
cout<<"Nilai
"<<*(penunjuk+1) <<" ada di alamat memori "
<<penunjuk+1<<"\n";
cout<<"Nilai
"<<*(penunjuk+2) <<" ada di alamat memori "
<<penunjuk+2<<"\n";
getch();
}
ØOperasi Logika
Suatu
pointer juga dapat dikenai operasi logika.
//Contoh9_4
#include<iostream.h>
#include "conio.h"
void main()
{ int a = 100, b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai pa=
"<<pa<< " nilai pb=
"<<pb<<"\n";
if(pa < pb)
cout<<"pa menunjuk ke memori lebih
rendah dari pb\n";
if(pa == pb)
cout<<"pa menunjuk ke memori yang
sama dengan pb\n";
if(pa > pb)
cout<<"pa menunjuk ke memori lebih
tinggi dari pb\n";
getch();}
4
POINTER DAN STRING
//Contoh9_5
#include
<iostream.h>
#include
<conio.h>
void
misteri1(char *);
void
main() {
char
string[] = "amikom";
cout<<
"String sebelum proses adalah " << string
<<"\n" ;
misteri1(string);
cout<<"String
setelah proses adalah "<<string;
getch();
}
void
misteri1(char *s) {
while
( *s != '\0' ) {
if
( *s >= 'a' && *s <= 'z' )
*s
-= 32;
++s;
}
}
5
POINTER MENUNJUK SUATU ARRAY
//Contoh9_6
#include "iostream.h"
#include "conio.h"
void main()
{ static int tgl_lahir[] = { 13,9,1982 };
int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array
*/
cout<<"Diakses dengan
pointer\n";
cout<<"Tanggal = "<<
*ptgl<<"\n";
cout<<"Bulan = "<<
*(ptgl + 1) <<"\n";
cout<<"Tahun =
"<<*(ptgl + 2) <<"\n";
cout<<"\nDiakses dengan array
biasa\n";
cout<<"Tanggal = "<<
tgl_lahir[0] <<"\n";
cout<<"Bulan = "<<
tgl_lahir[1] <<"\n";
cout<<"Tahun = "<<
tgl_lahir[2] <<"\n";
getch();
}
MEMBERI
NILAI ARRAY DENGAN POINTER
//contoh9_7
#include
"iostream.h"
#include
"conio.h"
void
main()
{ int
x[5], *p, k;
clrscr();
p = x;
x[0] =
5;
x[1] =
x[0];
x[2] =
*p + 2;
x[3] =
*(p+1) - 3;
x[4] =
*(x + 2);
for(k=0;
k<5; k++)
cout<<"x["<<k<<"]
= "<< x[k]<<"\n";
getch();
}
Tugas:
1.Buatlah Program untuk menggambarkan konsep
Pointer: menampilkan alamat pointe dan isi pointer, dengan ketentuan sbb,
Variabelbilangan bulatbil= 20;
dan variabel
pointerbulat*pnt.
2.Buatlahprogramuntukmenampilkanisi dan alamat pointer larik (array)
int* bilangan[]={5,7,8,3};
MEMORI DINAMIS
Pada contoh program di samping
kiri sejumlah memori secara ekplisit disisihkan untuk menampung array titik
yang mempunyai 10 elemen. Sebenamya alokasi memori ini, hanya yang dibutuhkan
saja, dapat dilakukan secara dinamis yaitu dilakukan pada saat run-time, Untuk
melakukan hal ini kita perlu array yang elemen elemennya adalah pointer ke
suatu struktur seperti dijelaskan pada program di samping kanan.
Alokasi memori secara dinamis dilakukan dengan operator new dan
dealokasi dilakukan dengan operator delete. Keduanya merupakan operator baru
pada C++.
0 komentar:
Posting Komentar