Struktur Data‎ > ‎

Pointer

Pointer (ID:penunjuk) merupakan tipe data yang menyimpan alamat memori suatu tipe data tertentu. Untuk lebih memvisualisasikannya, bayangkan memori komputer itu seperti sebuah lemari yang terdiri dari banyak laci-laci kecil, dan dapat berisi kertas: data kita. Masing-masing laci ini punya nomor: nomornya inilah alamat memori. Pointer itu ibarat sebuah laci yang isinya kertas yang bertuliskan nomor laci yang lain. Makanya dia dinamakan pointer/penunjuk karena dia menunjuk ke laci yang lain, ke alamat memori yang lain.

Jika sebuah variabel p merupakan sebuah pointer of integer berarti p akan berisi alamat memori yang menunjuk ke sebuah bilangan bulat (integer) atau ke sebuah variabel yang bertipe integer.

Pointer di Pascal

Untuk memahami pointer di Pascal, sila ketik kode dibawah ini, lalu jalankan.

Pointer1.pas

var
p : ^integer;
m, n : integer;
begin
writeln('Pointer in Pascal');writeln;
m:=10; n:=15;
writeln('m:=',m,'; n:=',n);
p:=@m; { p now points to m }
p^:=12; { this is the same to m:=12; }
writeln;write('p:=@m;p^:=12;');
writeln(#9 , 'm=' , m , ';' , #9 , 'n=' , n , ';');
p:=@n; { p now points to n }
p^:=m; { this is the same to n:=m; }
writeln;write('p:=@n;p^:=m;');
writeln(#9 , 'm=' , m , ';' , #9 , 'n=', n, ';'); { m = 12, n = 12 }
end.

Output

Pointer in Pascal

m:=10; n:=15

p:=@m;p^:=12;   m=12;   n=15;

p:=@n;p^:=m;    m=12;   n=12;


Penjelasan

  • perhatikan cara mendeklarasikan sebuah pointer di pascal, menggunakan tanda topi ( ^ )
  • p:^integer; artinya adalah p adalah sebuah pointer of integer. Maksudnya, p adalah sebuah pointer, yang hanya akan menunjuk ke sebuah integer.
  • p:=@m; artinya p diisi dengan alamat memori m. Sederhananya: p sekarang menunjuk ke m.
  • p^:=12; artinya nilai 12 dimasukkan ke alamat yang ditunjuk oleh p. INGAT: p adalah pointer; p hanya dapat berisi alamat memori. Makanya 12 (integer) tidak akan bisa masuk ke p, tapi hanya bisa masuk ke alamat yang ditunjuk oleh p. 
  • Perhatikan bahwa m sekarang bernilai 12.
  • p:=@n; artinya alamat memori n sekarang dimasukkan ke p. Ini bisa, karena p adalah pointer, dapat diisi oleh alamat memori. p sekarang menunjuk ke n.
  • p^:=m; artinya nilai m dimasukkan ke alamat yang ditunjuk oleh p.
  • karena m bernilai 12, maka 12 juga disimpan ke siapapun yang ditunjuk oleh p.
  • karena p menunjuk ke n, maka n lah yang ditimpa dengan 12.
  • makanya sekarang n bernilai 12.

Pointer di C


Pointer1.c

#include <stdio.h>
int main(){

printf("Demo Pointer in C\n\n");
int* p;
int m,n;

m=10;n=15;
printf("m=%d; n=%d\n",m,n);

p=&m;
*p=12;
printf("p=&m; *p=12; \tm=%d; \tn=%d;\n",m,n);

p=&n;
*p=m;
printf("p=&n; *p=m; \tm=%d; \tn=%d;\n",m,n);

return 0;
}

Output

Demo Pointer in C

m=10; n=15
p=&m; *p=12;    m=12;   n=15;
p=&n; *p=m;     m=12;   n=12;


Penjelasan





Comments