Jumat, 18 November 2011

C++ Lanjutan 16

6.2 POINTER

      Poiter adalah variable yang berisi alamat memori variable lain dan sevara tidak langsung menunjuk ke variable tersebut.
      Analoginya – 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 kerumah Andi, misalnya dirumah 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 diatas, 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 diatas adalah:

Nama
Alamat
Isi
Andi
8321
9821 = &Budi
Budi
9821
5 = *(&Budi)

      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 :
      #include <iostream.h>
      void main()
      {
          int *Andi; // Andi sebagai pointer
          int Budi = 5; // Budi bukan pointer, prhatikan perbedaan pada *
          Andi = &Budi // Isi dari Andi yaitu alamat Budi
          cout<<”Isi alamat memori Andi : “<<Andi<<endl;
          cout<<”Isi alamat memori Budi : “<<Budi<<endl;
          cout<<”Isi alamat memori Budi : “<<*Andi<<endl;
          cout<<”Alamat memori Andi : “<<&Andi<<endl;
          cout<<”Alamat memori Budi :”<<&Budi<<endl;
        }

        Keluarannya :
        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”.

Tidak ada komentar:

Posting Komentar