1 / 39

Struktur Data ( Data Structure ) – IS 2313

Imam Rozali , S.T., M.T. Struktur Data ( Data Structure ) – IS 2313. Chapter 2 : Pointer. Outline. KONSEP DASAR POINTER Pendeklarasian Variabel Pointer Mengatur Pointer Agar Menunjuk ke Variabel Lain Operasi pada Pointer Mengakses Isi Suatu Variabel Melalui Pointer

Download Presentation

Struktur Data ( Data Structure ) – IS 2313

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Imam Rozali, S.T., M.T. Struktur Data(Data Structure) – IS 2313

  2. Chapter 2 : Pointer

  3. Outline • KONSEP DASAR POINTER • PendeklarasianVariabel Pointer • Mengatur Pointer Agar MenunjukkeVariabel Lain • Operasipada Pointer • MengaksesIsiSuatuVariabelMelalui Pointer • TipeVariabel Pointer danTipeObyek Yang Ditunjuk • Pointer dan Array • Array Dari Pointer • Inisialisasi Array Pointer • Pointer Menunjuk Pointer • Pointer danStruct • Pointer danTipe Data String • Pointer Sebagai Parameter Fungsi • Pointer SebagaiKeluaranFungsi

  4. KONSEP DASAR POINTER • Pointer (variabelpenunjuk) adalahsuatuvariabel yang berisialamatlokasisuatumemoritertentu. • Jadiisidarivariabel pointer merupakanalamatdarilokasimemori yang digunakanuntukmenyimpan data danbukannilai data itusendiri.

  5. Jikavariabelmerupakanisimemori, danuntukmengaksesisimemoritersebutdiperlukan address, lalubagaimanacarakitamengetahuialamatdarisuatuvariabel ?

  6. PendeklarasianVariabel Pointer

  7. Mengatur Pointer Agar MenunjukkeVariabel Lain • Agar suatu pointer menunjukkevariabel yang lain, mula-mula pointer harusdiisidenganalamatdarivariabel yang akanditunjuk. Untukmenyatakanalamatdarisuatuvariabel, dapatdigunakan operator & (operator alamat, yang bersifatunaray), dengancaramenempatkan operator didepannamavariabel. • Sebagaicontoh, jika x dideklarasikansebagaivariabelbertipeint, maka&x berarti “alamatdarivariabel x”.

  8. Adapuncontohpemberianalamatkesuatuvariabel pointer px (yang dideklarasikansebagai pointer yang menunjukke data bertipeint) yaitu: Px = &x; • Pernyataandiatasberartibahwapxdiberinilaiberupaalamatdarivariabel x. Setelahpernyataantersebutdieksekusibarulahdapatdikatakanbahwapxmenunjukkevariabel x.

  9. Operasipada Pointer • OperasiPenugasan • Suatu variable pointer sepertihalnya variable yang lain, jugabisamengalamioperasipenugasan. Nilaidarisuatu variable pointer dapatdisalinke variable pointer yang lain. Operator (&) dalamkaitannyadengan pointer adalah operator yang mengembalikanalamatmemoridarioperandnya. • OperasiAritmatika • Suatuvariabel pointer hanyadapatdilakukanoperasiaritmatikadengannilai integer saja. Operasi yang biasadilakukanadalahoperasipenambahandanpengurangan. Operasipenambahandengansuatunilaimenunjukkanlokasi data berikutnya (index selanjutnya) dalammemori. Begitujugaoperasipengurangan.

  10. OperasiPenugasan

  11. OperasiAritmatika • Asumsikankitatelahmendeklarasikansebuah array float v[5], dananggapelemenpertamanyaberadapadalokasi 3000 dimemori. Lalukitadeklarasikansebuahvariabel pointer *vPtr, adaduacarauntukmengisivariabel pointer *vPtrdenganalamatdarielemenpertama array v, yaitu :

  12. Jikakitamelakukanoperasiaritmatikaseperti: dalamperhitunganaritmatikabiasa, makavPtr yang semulaberisi 3000 menjadi 3000 + 2 = 3002, namuninitidakberlakupada pointer. Operasiaritmatikapada pointer diatasartinyaadalahvPtr yang semulamenunjukpada v[0] sekarangmenunjukke v[2]. • KarenavPtrmenunjukalamatmemoridarivariabel v yang bertipe float, makavPtrsekarangberisi 3008 (3000 + 2 * 4).

  13. MengaksesIsiSuatuVariabelMelalui Pointer • Jikasuatuvariabelsudahditunjukoleh pointer, makavariabeltersebutdapatdiaksesmelaluivariabelitusendiri (disebutsebagaipengaksesantaklangsung), ataupunmelalui pointer (disebutpengaksesanlangsung). • Pengaksesantaklangsungdilakukandenganmenggunakan operator inderectionberupasimbol * (bersifatunaray), seperticontohberikut: *px yang menyatakan “isiataunilaivariabel/data yang ditunjukoleh pointer px”. Sebagaicontohjika y bertipeint, makasesudahduapernyataanberikut: px = &x; y = *px; y akanberisinilai yang sesuaidengannilai x.

  14. TipeVariabel Pointer danTipeObyek Yang Ditunjuk • Antaratipe pointer (sesuaidenganpendeklarasian pointer) dantipeobyek yang akanditunjukoleh pointer haruslahsejenis. Jikamisalnya pointer pudimaksudkanuntukmenunjuk data bertipeintmaka data yang akanditunjukoleh pointer pujugaharusbertipe int. Suatukesalahanakanterjadijikamisalnya pointer float digunakanuntukmenunjuk data bertipe int.

  15. MengubahIsiSuatuVariabelMelalui Pointer • Mula-mula pd dideklarasikansebagai pointer yang menunjukkesuatu data bertipe float dan d sebagaivariabelbertipe float. Selanjutnyadenganungkapan: d = 54.6; digunakanuntukmengisikannilai 54.6 secaralangsungkevariabel d. • Perintah : pd = &d; digunakanuntukmemberikanalamatdari d ke pd. Dengandemikian pd menunjukkevariabel d. • Sedangkanpernyataanberikut: *pd = *pd + 10; (atau: *pd += 10;) merupakaninstruksiuntukmengubahnilaivariabel d secarataklangsung. • Perintahdiatasberarti “jumlahkanisivariabel yang ditunjukoleh pd dengan 10 dansimpanhasilnyakevariabeltersebut”, atauidentikdenganpernyataan: D = d + 10;

  16. Pointer dan Array • Misalnyadalamsuatufungsidideklarasikan: static inttgl_lahir[3] = { 01, 09, 64 }; int *ptgl; • Kemudiandiberikanpernyataan ptgl = &tgl_lahir[0]; • makaptglakanberisialamatdarielemen array tgl_lahir yang berindeks nol. Instruksidiatasjugadapatditulismenjadi: ptgl = tgl_lahir; sebabnama array tanpatandakurungmenyatakanalamatawaldari array. • Sesudahpenugasansepertidiatas, maka *ptgl dengansendirinyamenyatakanelemenpertama (berindekssamadengannol) dari array tgl_lahir.

  17. Jikainginmenampilkanseluruhelemen array tgl_lahir, makadapatdigunakanperintah

  18. Secaraumumoperasi pointer dapatditerangkansebagaiberikut. Misalkan a adalahsuatu array, dan pa adalah pointer yang menunjuk array a, maka *(pa + i) akanmenyatakanelemen array denganindekssamadengani.

  19. Jika pa dideklarasikansebagai int *pa; makaobyekdari pa adalah data int. • Cara lain dalammenampilkanisisuatu array yaitudenganmenaikkanisivariabel pointer denganmenggunakan operator ++. *(ptgl + i) dapatdigantimenjadi ptgl++

  20. Misalkansuatuinstruksi: int *pa; int a[3]; • Sesudahpernyataan: pa = a; • Sesudahpernyataan: pa++;

  21. Array Dari Pointer • Suatu array dapatdigunakanuntukmenyimpansejumlah pointer. Misalpernyataan: char *namahari[10]; merupakanpernyataanuntukmendeklarasikan array pointer.

  22. Inisialisasi Array Pointer

  23. Pointer Menunjuk Pointer

  24. Pointer danStruct • Samahalnyaseperti array, pointer dapatbertipeapasaja, bahkantipebuatankitasendiri.

  25. Pointer danTipe Data String • String adalahsekumpulankarakter-karakter yang membentuksuatularikatau array. Suatu string dapatdiakseselemen-elemenkarakternyabaiksebagai pointer ataupunsebagailarik.

  26. Pointer Sebagai Parameter Fungsi • Penerapan pointer sebagai parameter fungsiyaitujikadiinginkan agar nilaisuatuvariabel internal dapatdiubaholehfungsi yang dipanggil. • Contohpemanggilanfungsinyaadalah : naikkan_nilai(&a, &b);

  27. Pointer SebagaiKeluaranFungsi • Suatufungsidapatdibuat agar keluarannyaberupa pointer.

More Related