You are on page 1of 5

POINTER 1 PENGERTIAN POINTER 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 & bersi at unary (hanya memerlukan satu operand saja). Operator & menghasilkan alamat dari operandnya. Operator ! Operator ! bersi at unary (hanya memerlukan satu operand saja). Operator ! menghasilkan nilai yang berada pada sebuah alamat. 2 DEKLARASI POINTER "eperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. #entuk $mum : Tipe_data *nama_pointer; %%Contoh&'(
int *px; char *sh; Contoh Program : #include IOSTREAM.h #include conio.h void ain!" # int x$ %; &* x dan % 'ertipe int *& int *px; &* px pointer %an( enun)u* o')e* *& clrscr!"; x + ,-; px + .x; &* px 'erisi ala at dari x *& % + *px; &* % 'erisi nilai %an( ditun)u* px *& cout//Ala at x +//.x //0n; cout//Isi px + 0n$ px"; cout//Isi x + 0n$ x"; cout//1ilai %an( ditun)u* oleh px + 0n$ *px"; cout//1ilai % + 0n$ %"; (etch!"; 2

3 OPERASI POINTER Operasi Pen !asan "uatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi penugasan. )ilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.

%%Contoh&'*
#include 3iostrea .h3 #include 3conio.h3 void ain!" # 4loat *x5$%$ *x6; clrscr!"; % + 57.89; x5 + .%; &* Ala at dari x6 + x5; &* Isi varia'el cout//31ilai varia'el % + 3//%// 3 cout//31ilai varia'el % + 3//%// 3 (etch!"; 2

% disalin *e varia'el x5 *& x5 disalin *e varia'el x6 *& ada di ala at 3// x5//30n3; ada di ala at 3// x6//30n3;

Operasi Aritmati"a "uatu 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 (inde+ selanjutnya) dalam memori. #egitu juga operasi pengurangan. %%Contoh&',
#include /iostrea .h: #include /conio.h: void ain!" # int nilai;7<$ *penun)u*; clrscr!"; nilai;=< + 569; nilai;5< + 789; nilai;6< + -9=; penun)u* + .nilai;=<; cout//31ilai 3//*penun)u* //3 ada di ala at e ori 3 //penun)u*//30n3; cout//31ilai 3//*!penun)u*>5" //3 ada di ala at e ori 3 //penun)u*>5//30n3; cout//31ilai 3//*!penun)u*>6" //3 ada di ala at e ori 3 //penun)u*>6//30n3; (etch!"; 2

Operasi Lo!i"a "uatu pointer juga dapat dikenai operasi logika. %%Contoh&'
#include/iostrea .h: #include 3conio.h3 void ain!" # int a + 5==$ ' + 6==$ *pa$ *p'; clrscr!"; pa + .a; p' + .'; cout//3nilai pa+ 3//pa// 3 nilai p'+ 3//p'//30n3; i4!pa / p'" cout//3pa enun)u* *e e ori le'ih rendah dari p'0n3; i4!pa ++ p'" cout//3pa enun)u* *e e ori %an( sa a den(an p'0n3; i4!pa : p'" cout//3pa enun)u* *e e ori le'ih tin((i dari p'0n3;

(etch!";2

# POINTER DAN STRING %%Contoh&'. /in0lude 1iostream.h2 /in0lude 10onio.h2 void misteri((0har !)3 void main() 4 0har string56 7 8amikom83 0out11 8"tring sebelum proses adalah 8 11 string 1189n8 3 misteri((string)3 0out118"tring setelah proses adalah 811string3 get0h()3 : void misteri((0har !s) 4 ;hile ( !s <7 =9>= ) 4 i ( !s 27 =a= && !s 17 =?= ) !s @7 ,*3 AAs3 : : $ POINTER %EN&N'&K S&AT& ARRA( %%Contoh&'B

#include 3iostrea .h3 #include 3conio.h3 void ain!" # static int t(l?lahir;< + # 57$@$5@,6 2; int *pt(l; pt(l + t(l?lahir; &* pt(l 'erisi ala at arra% *& cout//3Aia*ses den(an pointer0n3; cout//3Tan((al + 3// *pt(l//30n3; cout//3Bulan + 3// *!pt(l > 5" //30n3; cout//3Tahun + 3//*!pt(l > 6" //30n3; cout//30nAia*ses den(an arra% 'iasa0n3; cout//3Tan((al + 3// t(l?lahir;=< //30n3; cout//3Bulan + 3// t(l?lahir;5< //30n3; cout//3Tahun + 3// t(l?lahir;6< //30n3; (etch!"; 2

%E%)ERI NILAI ARRA( DENGAN POINTER %%0ontoh&'C /in0lude 8iostream.h8 /in0lude 80onio.h8 void main() 4 int +5.6, !p, k3 0lrs0r()3 p 7 +3 +5>6 7 .3

+5(6 7 +5>63 +5*6 7 !p A *3 +5,6 7 !(pA() @ ,3 +5-6 7 !(+ A *)3 or(k7>3 k1.3 kAA) 0out118+5811k1186 7 811 +5k61189n83 get0h()3 : Dugas: (. #uatlah Program untuk menggambarkan konsep Pointer: menampilkan alamat pointe dan isi pointer, dengan ketentuan sbb, Eariabel bilangan bulat bil7 *>3 dan variabel pointer bulat !pnt. *. #uatlah program untuk menampilkan isi dan alamat pointer larik (array) int ! bilangan5674.,C,F,,:3

%E%ORI DINA%IS
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 !!.
#include /iostrea .h: struct tt* # int x; int %; 2; ain!" # int i; struct tt* titi*;5=<; 4or !i+=; i / 5=; >>i" # titi*;i<.x + i ; titi*;i<.%+i;2 4or!i+=;i/ 5=;>>i" #cout // titi*;i<.x // 3$ 3 // titi*;i<.% // 30n3; 2 return =;2 #include /iostrea .h: struct tt* # int x; int %; 2; ain!" # int i; struct tt* *titi*;5=<; 4or!i+=;i/5=;>>i" # titi*;i< + neC tt*; titi*;i<D:x+i; titi*;i<D:% + i; 2 4or !i+=;i/ 5=;>>i" # cout // titi*;i<D:x // titi*;i<D:% // 30n3; 2 4or!i+=;i/ 5=;>>i" # && 4ree!titi*;i<"; delete titi*;i<; 2 return =; 2

3$ 3

//

You might also like