Advertisement
arsel

Pointer

Mar 27th, 2013
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. Pointer merupakan variabel khusus yang berisi suatu address (alamat) di lokasi lain didalam memory. Suatu variabel yang points(menunjuk) ke sesuatu sehingga disebut pointer.
  2.  
  3. Ada dua macam pointer:
  4. -typed(tertentu): merupakan pointer yang menunjuk pada tipe data tertentu pada variable.
  5. -generic(umum): merupakan pointer yang tidak menunjuk pada tipe data tertentu pada variable.
  6. Contoh deklarasi pointer:
  7.  
  8. var p : ^integer;
  9.  
  10. Contoh di atas merupakan deklarasi variabel p sebagai pointer dari integer. Dengan menambahkan tanda caret (^) di depan nama tipe data variabel yang dideklarasikan:
  11. contoh :
  12.  
  13. program contoh_pointer1;
  14. uses wincrt;
  15. var p : ^integer;
  16. m, n : integer;
  17. begin
  18. m:=10;
  19. n:=15;
  20. p:=@m; { p sekarang menunjuk ke m }
  21. p^:=12; { hal ini sama dengan m:=12; }
  22. p:=@n; { p sekarang menunjuk ke n }
  23. p^=m; { { hal ini sama dengan n:=m; }
  24. writeln(‘m = ‘,m,’, n = ‘,n); { m = 12, n = 12 }
  25. end.
  26.  
  27. Ketika p menunjuk ke m ( p:=@m, mengakses p^ sama dengan mengakses m. Dalam membuat program, dalam penggunaan pointer kita memerlukan alokasi memori tertentu: Ketika kita mendeklarasikan variabel pointer dalam “var” sehingga merupakan suatu static variable, yang mana Static variable ini dibatasi oleh kapasitas 64KB untuk tiap module. Yang berarti dalam program utama kita hanya bisa menggunakan hanya 64KB dan tiap unit Pascal hanya bisa memakai 64KB. Sehingga kita perlu memecahkan program kebeberapa unit. Salah satu teknik yang dipakai untuk mengatasi persoalan ini adalah seperti program berikut.
  28.  
  29. Program contoh_pointer2;
  30. uses wincrt;
  31. Type Pemployee = ^Temployee;
  32. Temployee = record Name : string[10];
  33. Position : char;
  34. Salary : longint;
  35. end;
  36. var p : pemployee;
  37. begin
  38. new(p);
  39. p^.name:=’Saddam’;
  40. p^.position:=’S';
  41. p^.salary:=3000;
  42. writeln(p^.name,’ ‘,p^.position,’ ‘,p^.salary);
  43. dispose(p);
  44. end.
  45.  
  46. Pada blok begin…end blok, kita bisa melihat meskipun p tidak menunjuk pada suatu variable tetapi dapat diisi dengan nilai. Pernyataan new(p); tidak memerlukan alokasi memori. Setelah itu kita bisa melakukan apapun pada variabel tersebut sampai kita membuangnya dari memori dengan memakai perintah dispose(p);. Variable dengan cara ini dinamakan dengan dynamic variable.
  47. Generic Pointer adalah pointer tanpa tipe data tertentu. Biasanya, pointer berkaitan dengan tipe data khusus, sedangkan generic pointer tidak.
  48. Deklarasi:
  49.  
  50. Var P : pointer;
  51.  
  52. Dipergunakan sebagai buffer sementara (tidak permanen). Sehingga kita bisa melepasnya untuk suatu saat tidak diperlukan. Untuk itu pointer sangat bagus karena sifatnya yang dinamis. Tetapi, generic pointer tidak sama dengan typed pointer. Typed pointer menggunakan “new” untuk menampung memori dan “dispose” untuk melepasnya. Generic pointer menggunakan “getmem” untuk mendapatkan memori dan “freemem” untuk melepasnya. Pada pointer dengan tipe tertentu, program Pascal mengetahui ukuran dari memori yang harus dilaokasikan, sedangkan tipe umum (generic pointer) Pascal tidak bisa, karena Pascal tidak mengetahui variabel apa yang akan dipakai. Sehingga dengan getmem kita perlu untuk menentukan berapa besar memori yang akan kita alokasikan. Ukuran terbesar adalah 65532 bytes (hampir 64K).
  53.  
  54. Program contoh_pointer2;
  55. uses wincrt;
  56. Var P : pointer;
  57. Begin
  58. Getmem(p,8192); { Reserve 8192 bytes }{ We use it then }
  59. freemem(p,8192); { Release it, 8192 bytes }
  60. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement