Top Banner

of 22

Pointer

Jan 10, 2016

Download

Documents

Amalia Dewi

Materi Algoritma Pemrograman
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • M. Febriansyah., [email protected] - 9POINTER

  • DEFINISI POINTEROPERATOR POINTERPOINTER ARRAYPOINTER STRINGCONTOH PENGGUNAAN POINTEROUTLINE

  • DEFINISI POINTERPengertian pointer :Pointer adalah sebuah variabel yang berisi alamat memori dari variabel lain dan secara tidak langsung menunjuk ke variabel tersebut.

    Fungsi pointer dalam pemrograman :Teknik pointer digunakan untuk menunjukkan suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.

  • Contoh analoginya :Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Sedangkan anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi kerumah Andi, misalnya rumah no 8321. Sesampai di rumah Andi, Andi memberitahukan kepada anda alamat rumah Budi, yaitu ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi misal 5 orang.

  • KESIMPULAN :Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi hanya memberitahu alamat Budi (alamat 9821), maka dari situlah diketahui jumlah anggota keluarga Budi.

  • Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi diatas adalah:

    Dalam bentuk pointer, ditulis : Andi = &Budi; // baris 1 Budi = *(&Budi); // baris 2 Subtitusi pernyataan di baris 2 : Andi = *Andi;

    NAMAALAMATISIAndi83219821 = &BudiBudi98215 = *(&Budi)

  • Contoh Penggunaan Pointer :#include void main(){int *Andi;int Budi = 5;Andi = &Budi;cout
  • OPERATOR POINTERTerdapat 2 jenis operator untuk pointer, yaitu :

    Operator alamat (&)Operator reference (*)

  • OPERATOR ALAMAT1

  • Contoh :

  • Contoh :// my first pointer#include int main (){ int value1 = 5, value2 = 15;int * mypointer;mypointer = &value1;*mypointer = 10;mypointer = &value2;*mypointer = 20;cout
  • OPERATOR REFERENCE2

  • Contoh :

  • Contoh :// more pointers#include int main (){int value1 = 5, value2 = 15;int *p1, *p2;p1 = &value1; // p1 = address of value1p2 = &value2; // p2 = address of value2*p1 = 10; // value pointed by p1 = 10*p2 = *p1; // value pointed by p2 = value pointed by p1p1 = p2; // p1 = p2 (value of pointer copied)*p1 = 20; // value pointed by p1 = 20cout
  • POINTER - ARRAYPointer array merupakan teknik pointer dimana data disimpan di memori dalam bentuk sebuah array.Contoh :#include void main(){int n;int array[4] = {10,20,30,40};for(n=0;n
  • Keluarannya : Array[0] = 10 Menggunakan pointer = 10Disimpan dalam 0xdb72408Array[1] = 20Menggunakan pointer = 20Disimpan dalam 0xdb7240aArray[2] = 30Menggunakan pointer = 30Disimpan dalam 0xdb7240cArray[3] = 40Menggunakan pointer = 40Disimpan dalam 0xdb7240eMengapa hasil antara dua contoh diatas 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 ).

  • POINTER - STRINGString merupakan bentuk khusus dari variabel array. Sehingga operasi pointer array tidak jauh berbeda dengan pointer string.Contoh : #include void main(){ char nama[5] = Andi; cout
  • Keluarannya :Nama awal : AndiNama menjadi : AndyJadi :String adalah array (susunan) dari karakter-karakterString dapat diakses dan dimanipulasi lewat pointer Alamat awal dari string dapat diperoleh dari namanya

  • VOID POINTERTipe pointer void merupakan tipe khusus. void pointers dapat menunjuk pada tipe data apapun, nilai integer value atau float, maupun string atau karakter. Keterbatasannya adalah tidak dapat menggunakan operator asterisk (*), karena panjang pointer tidak diketahui, sehingga diperlukan operator type casting atau assignations untuk mengembalikan nilai void pointer ketipe data sebenarnya.

  • Contoh :#include void increase (void* data, int type){switch (type){case sizeof(char) : (*((char*)data))++; break;case sizeof(short): (*((short*)data))++; break;case sizeof(long) : (*((long*)data))++; break;}}int main (){char a = 5;short b = 9;long c = 12;increase (&a,sizeof(a));increase (&b,sizeof(b));increase (&c,sizeof(c));cout
  • POINTER UNTUK FUNCTIONSC++ memperbolehkan operasi dengan pointer pada function. Kegunaan yang utama adalah untuk memberikan satu function sebagai parameter untuk function lainnya. Deklarasi pointer untuk function sama seperti prototype function kecuali nama function dituliskan diantara tanda kurung () dan operator asterisk (*) diberikan sebelum nama.

  • Contoh :// pointer to functions#include int addition (int a, int b){ return (a+b); }int subtraction (int a, int b)SBP/C++/Ayuliana/Feb2004 45{ return (a-b); }int (*minus)(int,int) = subtraction;int operation (int x, int y, int (*functocall)(int,int)){int g;g = (*functocall)(x,y);return (g);}int main (){int m,n;m = operation (7, 5, addition);n = operation (20, m, minus);cout