190 likes | 334 Views
Pemrograman Dasar. Pointers. Memory. Memory merupakan ruang penyimpanan informasi di dalam komputer. Memory dalam komputer dibagi ke dalam satuan-satuan kecil yang disebut Byte. Masing-masing byte pada memory memiliki alamat tersendiri.
E N D
Pemrograman Dasar Pointers
Memory • Memory merupakan ruang penyimpanan informasi di dalam komputer. Memory dalam komputer dibagi ke dalam satuan-satuan kecil yang disebut Byte. Masing-masing byte pada memory memiliki alamat tersendiri. • Komputer mengakses (baca atau tulis) memory dengan menggunakan alamat tersebut.
Pointer • Pointer seperti variabel, menyimpan suatu nilai. • Hanya saja, nilai yang disimpan di dalam pointer adalah berupa alamat memori.
Operator referensi • Untuk melihat alamat memori suatu variabel, kita dapat menggunakan operator referensi : " & ". • Misalkan pernyataan: abc = &def; • Menugaskan nilai alamat variabel def ke dalam abc.
Alamat memory variabel • void main() { • int abc = 5; • float def = 7.5; • double ghi = 17.777; • cout<<"Isi variabel :"<<endl; • cout<<"abc : "<<abc<<endl; • cout<<"def : "<<def<<endl; • cout<<"ghi : "<<ghi<<endl; • cout<<"\nAlamat variabel :"<<endl; • cout<<"abc : "<<&abc<<endl; • cout<<"def : "<<&def<<endl; • cout<<"ghi : "<<&ghi<<endl; • system("pause"); • }
Deklarasi Pointer • Suatu variabel pointer dideklarasikan sebagai berikut: • tipeData* namaPointer; • tipeData *namaPointer; • Contoh: • int *a; • float *b, *c; // bukan float *b, c;
Deklarasi pointer • Agar pointer menunjuk ke variabel lain, mula-mula harus diisi dengan alamat suatu variabel. Contoh: • int nilai; • int *pNilai; • Pointer pNilai diatur agar menunjuk ke variabel a dengan cara: • pNilai = &nilai;
Operator dereferensi • Untuk mengakses nilai yang berada pada alamat yang ditunjuk oleh pointer, kita menggunakan operator " * ". Contoh: • int nilai = 20; • int *pNilai; • pNilai = &nilai; • cout<< *pNilai <<endl; • Setelah pernyataan pNilai = &nilai, maka variabel nilai dengan *pNilai menjadi sama.
Pointer • Perlu diingat bahwa operator "*" pada pernyataan int *pNilai; tidak sama dengan operator "*" pada cout<<*pNilai<<endl; • Yang pertama adalah deklarasi pointer bernama pNilai. Tanda "*" tersebut hanya menyatakan bahwa pNilai adalah suatu pointer. Sedangkan yang kedua adalah operator dereferensi yang menunjuk ke alamat yang ditunjuk oleh pointer pNilai. • Penggunaan tanda "*" pada saat deklarasi pointer dengan di dalam pernyataan harus dibedakan.
Contoh • int main () • { • int abc, def; • int *tunjuk; • tunjuk = &abc; • *tunjuk = 10; • tunjuk = &def; • *tunjuk = 20; • cout << "nilai abc: " << abc << endl; • cout << "nilai def: " << def << endl; • system("pause"); • return 0; • }
Pointer • Misalkan terdapat potongan kode program seperti berikut: • int andy, fred; • int *ted; • andy = 25; • fred = andy; • ted = &andy; • Maka nilai tiap variabel setelah itu adalah:
Pointer • Jika program sebelumnya dilanjutkan dengan: • int beth; • beth = *ted; • Maka isi masing-masing variabel adalah: • Keterangan tambahan: • beth=ted; // beth sama dengan ted (1776) • beth=*ted; //beth adalah nilai yang ditunjuk oleh ted (25)
Inisialisasi pointer • Suatu pointer dapat langsung diisi nilai saat deklarasi. Caranya: • int angka; • int *pAngka = &angka; • Pernyataan ini ekivalen dengan: • int angka; • int *pAngka; pAngka = &angka; • Dan BERBEDA dengan: • int angka; • int *pAngka; *pAngka = &angka;
Uji pemahaman • Terka output program berikut: • int main () • { • int abc = 5, def = 15; • int *p1, *p2; • p1 = &abc;//p1=alamat abc • p2 = &def;//p2=alamat def • *p1 = 10; //nilai yang ditunjuk p1=10 • *p2 = *p1; //nilai yang ditunjuk p2=nilai yang ditunjuk p1 • p1 = p2; //p1=p2 (nilai pointer disalin) • *p1 = 20; // nilai yang ditunjuk p1=20 • cout << "isi abc " << abc << endl; • cout << "isi def " << def << endl; • system("pause"); • return 0; • }
Pointer dan Array • Pointer dan array mempunyai hubungan yang dekat. Secara internal, array juga menyatakan alamat. Misalkan terdapat suatu array dan suatu pointer: • int angka [5]; int *pArray; • Maka agar pointer pArray menunjuk ke array angka, pernyataan yang valid adalah: • pArray = angka; • Sebaliknya, pernyataan pArray = &angka; menjadi tidak valid karena array angka juga merupakan suatu identifier yang menyatakan alamat.
Pointer dan Array • Meskipun pArray = angka; boleh dilakukan, perintah angka = pArray tidaklah valid. Hal ini karena tidak seperti alamat pada pointer pArray, alamat pada array angka tidak dapat diubah. • Suatu array dapat dipandang sebagai konstanta pointer.
Pointer dan Array • Setelah baris pArray = angka, maka: • Identifier angka[0] sama dengan *pArray. • Identifier angka[1] sama dengan *(pArray+1). • Identifier angka[2] sama dengan *(pArray+2). • Array pointer juga dapat digeser. Misalkan mula-mula pArray menunjuk pada angka[0], maka: • int angka[5] = {1,2,3,4,5}; • int *pArray = angka; • cout<<*pArray<<endl; • pArray++; cout<<*pArray<<endl; • pArray+=2; cout<<*pArray<<endl; • pArray=&angka[2]; cout<<*pArray<<endl;
Contoh array pointer • int main () • { • int angka[5]; • int * p; • p = angka; *p = 10; • p++; *p = 20; • p = &angka[2]; *p = 30; • p = angka + 3; *p = 40; • p = angka; *(p+4) = 50; • for (int n=0; n<5; n++) • cout << angka[n] <<endl; • system("pause"); • return 0; • }
Thank You for your attention • Thanks to: • cplusplus.com • Pemrograman C++ by Abdul Kadir • Yoannita S.Kom & Hermawan S.Kom Sumber slide