390 likes | 555 Views
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
E N D
Imam Rozali, S.T., M.T. Struktur Data(Data Structure) – IS 2313
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
KONSEP DASAR POINTER • Pointer (variabelpenunjuk) adalahsuatuvariabel yang berisialamatlokasisuatumemoritertentu. • Jadiisidarivariabel pointer merupakanalamatdarilokasimemori yang digunakanuntukmenyimpan data danbukannilai data itusendiri.
Jikavariabelmerupakanisimemori, danuntukmengaksesisimemoritersebutdiperlukan address, lalubagaimanacarakitamengetahuialamatdarisuatuvariabel ?
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”.
Adapuncontohpemberianalamatkesuatuvariabel pointer px (yang dideklarasikansebagai pointer yang menunjukke data bertipeint) yaitu: Px = &x; • Pernyataandiatasberartibahwapxdiberinilaiberupaalamatdarivariabel x. Setelahpernyataantersebutdieksekusibarulahdapatdikatakanbahwapxmenunjukkevariabel x.
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.
OperasiAritmatika • Asumsikankitatelahmendeklarasikansebuah array float v[5], dananggapelemenpertamanyaberadapadalokasi 3000 dimemori. Lalukitadeklarasikansebuahvariabel pointer *vPtr, adaduacarauntukmengisivariabel pointer *vPtrdenganalamatdarielemenpertama array v, yaitu :
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).
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.
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.
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;
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.
Jikainginmenampilkanseluruhelemen array tgl_lahir, makadapatdigunakanperintah
Secaraumumoperasi pointer dapatditerangkansebagaiberikut. Misalkan a adalahsuatu array, dan pa adalah pointer yang menunjuk array a, maka *(pa + i) akanmenyatakanelemen array denganindekssamadengani.
Jika pa dideklarasikansebagai int *pa; makaobyekdari pa adalah data int. • Cara lain dalammenampilkanisisuatu array yaitudenganmenaikkanisivariabel pointer denganmenggunakan operator ++. *(ptgl + i) dapatdigantimenjadi ptgl++
Misalkansuatuinstruksi: int *pa; int a[3]; • Sesudahpernyataan: pa = a; • Sesudahpernyataan: pa++;
Array Dari Pointer • Suatu array dapatdigunakanuntukmenyimpansejumlah pointer. Misalpernyataan: char *namahari[10]; merupakanpernyataanuntukmendeklarasikan array pointer.
Pointer danStruct • Samahalnyaseperti array, pointer dapatbertipeapasaja, bahkantipebuatankitasendiri.
Pointer danTipe Data String • String adalahsekumpulankarakter-karakter yang membentuksuatularikatau array. Suatu string dapatdiakseselemen-elemenkarakternyabaiksebagai pointer ataupunsebagailarik.
Pointer Sebagai Parameter Fungsi • Penerapan pointer sebagai parameter fungsiyaitujikadiinginkan agar nilaisuatuvariabel internal dapatdiubaholehfungsi yang dipanggil. • Contohpemanggilanfungsinyaadalah : naikkan_nilai(&a, &b);
Pointer SebagaiKeluaranFungsi • Suatufungsidapatdibuat agar keluarannyaberupa pointer.