seni seviyorum

Rabu, 03 Juni 2009
POINTER
Pointer
Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung
menunjuk ke variabel tersebut.
Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga
Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda
mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah
Andi, misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa
alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah
keluarga yang dimiliki Budi yaitu lima orang (misalkan).
Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah
keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat Budi) itulah Anda
mengetahui jumlah keluarga Budi.
Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *,
maka hubungan analogi di atas adalah:
Nama Alamat Isi
Andi 8321 9821 = &Budi
Budi 9821 5 = *(&Budi)
Algoritma dan Pemrograman II (3 SKS) Struktur dan Pointer
Syamsuryadi Program Ilmu Komputer halaman 5 dari 8
Dalam bentuk pointer, ditulis :
Andi = &Budi; // baris 1
Budi = *(&Budi); // baris 2
Subtitusi pernyataan di baris 2 :
Andi = *Andi;
Contoh program yang menggambarkan hal tersebut sebagai berikut:
#include
void main()
{
int *Andi; // Andi sebagai pointer
int Budi = 5; // Budi bukan pointer, perhatikan perbedaan pada *
Andi = &Budi // Isi dari Andi yaitu alamat Budi
cout<<”Isi alamat memori Andi : “<cout<<”Isi alamat memori Budi : “<cout<<”Isi alamat memori Budi : “<<*Andi<cout<<”Alamat memori Andi : “<<&Andi<cout<<”Alamat memori Budi :”<<&Budi<}
Hasil program :
Isi alamat memori Andi : 0x6da72448
Isi alamat memori Budi : 5
Isi alamat memori Budi : 5
Alamat memori Andi : 0x6da7244a
Alamat memori Budi : 0x6da72448
Penjelasan :
Isi alamat memori Andi adalah alamat memori Budi, yaitu 0x6da72448 (alamat ini
berbeda-beda tergantung dari komputernya dan ditulis dalam bentuk hexadesimal).
Sedangkan isi alamat memori Budi adalah 5. Cara mengakses isi dari alamat Budi ada dua cara,
yaitu mengakses variabel Budi dan mengakses isi dari pointer Andi (*Andi). *Andi dapat juga
disebut “isi dari alamat memori yang ditunjuk oleh Andi”. Karena alamat memori yang ditunjuk
oleh Andi adalah alamat memori Budi, maka dapat dikatakan “isi dari alamat memori Budi”.
2.2.1 Pointer - Array
Kita akan melihat bagaimana data disimpan di memori dalam sebuah array.
Algoritma dan Pemrograman II (3 SKS) Struktur dan Pointer
Syamsuryadi Program Ilmu Komputer halaman 6 dari 8
Contoh :
#include
void main()
{
int n;
int array[4] = {10,20,30,40};
for(n=0;n<4;n++)
{
cout<<”Array[“<cout<<”\tMenggunakan pointer = “<<*&array[n]<cout<<”\tDisimpan dalam “<<&array[n]<}
}
Keluarannya :
Array[0] = 10
Menggunakan pointer = 10
Disimpan dalam 0xdb72408
Array[1] = 20
Menggunakan pointer = 20
Disimpan dalam 0xdb7240a
Array[2] = 30
Menggunakan pointer = 30
Disimpan dalam 0xdb7240c
Array[3] = 40
Menggunakan pointer = 40
Disimpan dalam 0xdb7240e
Penjelasan :
Seperti yang anda lihat, setiap array disimpan dalam 2 byte memori karena kita
menggunakan tipe data integer. Perhatikan pula penggunaan pointer dalam
pengaksesan nilai setiap elemen array dan pengaksesan alamat setiap array.
Alamat setiap elemen array dapat diperoleh dengan cara
&array[n] atau array+n
Isi dari setiap elemen array dapat diperoleh dengan cara
array[n] atau *(array+n)
Algoritma dan Pemrograman II (3 SKS) Struktur dan Pointer
Syamsuryadi Program Ilmu Komputer halaman 7 dari 8
Di bawah ini adalah contoh pengaksesan memori dan isi memori dengan menggunakan
cara kedua.
Contoh :
#include
void main()
{
int n;
int array[4] = {10,20,30,40};
for(n=0;n<4;n++)
{
cout<<”Array[“<cout<<”\tMenggunakan pointer = “<<*(array+n)<cout<<”\tDisimpan dalam “<}
}
Keluarannya :
Array[0] = 10
Menggunakan pointer = 10
Disimpan dalam 0xdb72408
Array[1] = 20
Menggunakan pointer = 20
Disimpan dalam 0xdb7240a
Array[2] = 30
Menggunakan pointer = 30
Disimpan dalam 0xdb7240c
Array[3] = 40
Menggunakan pointer = 40
Disimpan dalam 0xdb7240e
Mengapa hasil antara dua contoh di atas sama namun sintaksnya berbeda ? Karena array itu
sebenarnya telah menunjuk ke alamat memori setiap elemennya, sehingga untuk mengetahui
alamat memori setiap elemen array cukup dengan array + n dengan n bilangan bulat ( integer ).
2.2.2 Pointer - String
String merupakan bentuk khusus dari array. Oleh karena itu operasi pointer-array
tidak jauh berbeda dengan operasi pointer-string
Algoritma dan Pemrograman II (3 SKS) Struktur dan Pointer
Syamsuryadi Program Ilmu Komputer halaman 8 dari 8
Contoh :
#include
void main()
{
char nama[5] = “Andi”;
cout<<”Nama awal : “<char *ptr;
ptr = nama;
*(ptr+3) = ‘y’;
cout<<”Nama menjadi : “<}
Keluarannya :
Nama awal : Andi
Nama menjadi : Andy
Jadi :
String adalah array (susunan) dari karakter-karakter.
String dapat diakses dan dimanipulasi lewat pointer.
Alamat awal dari string dapat diperoleh dari namanya.
2.2.3 Pointer Sebagai Argumen String
Jika pointer dikirim sebagai argument, maka nilai aktualnya dapat dimodifikasi.
Contoh :
#include
void ubah(char *);
void main()
{
char *ptr,nama[5] = “Andi”;
ptr = nama; // ptr sebagai pointer ke variable nama
cout<<”Nama awal : “<ubah(ptr);
cout<<”Nama menjadi : “<}
void ubah(char *x)
{
*(x+3) = ‘y’;
}
Keluarannya :
Nama awal : Andi
Nama menjadi : Andy
posted by asy syaghaf @ 6/03/2009 10:47:00 PM  
1 Comments:
  • At 5 Juni 2009 pukul 21.11, Anonymous anit said…

    hajar,,,,!!!!
    duh bLog_y nGegemesin dech,,,
    Lpar ne jar Lht bLog_y,,,
    bLh gk aQ mkN,,,???
    oia jgn Lpha comment aQ yach,,,,!!!!
    ochey,,,,!!!!

     
Posting Komentar
<< Home
 
About Me

Name: asy syaghaf
Home: Pekanbaru, Riau
About Me: saya hanya seorang gadis biasa yang tengah berjuang menelusuri jati diri.
See my complete profile
Previous Post
Archives
Shoutbox

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.

Links
  • link 1
  • link 2
  • link 3
  • link 4
Powered by

Free Blogger Templates

BLOGGER