180 likes | 313 Views
Pertemuan 21. POINTER Bag.1. Triana Elizabeth, S.Kom. Dibuat oleh : Renni Angreni, S.Kom. MEMORY.
E N D
Pertemuan 21 POINTER Bag.1 Triana Elizabeth, S.Kom Dibuatoleh : Renni Angreni, S.Kom.
MEMORY • Memory merupakanruangpenyimpananinformasididalamkomputer. Memory dalamkomputerdibagikedalamsatuan-satuankecil yang disebut Byte. Masing-masing byte pada memory memilikialamattersendiri. • Komputermengakses (bacaatautulis) memory denganmenggunakanalamattersebut.
POINTER • Pointer sepertivariabel, menyimpansuatunilai. Hanyasajanilai yang disimpandidalam pointer adalahberupaalamatmemori. • Pointer sesungguhnyaberisialamatdarisuatu data, bukan data sebagaimanapadavariabel. • Untukmelihatalamatmemorisuatuvariabel, kitadapatmenggunakan operator referensi, yaitu : “ & “ Misalkanpernyataan : po = &var; Menugaskannilaialamatdarivariabelvarkedalamvariabelpo.
Contoh #include <iostream> #include <conio.h> #include <string> using namespace std; void main() { intangka = 34500; float bilangan = 98.21; string kabar = "Hello World!"; cout<<"Isidarivariabel"<<endl; cout<<"Variabelangka = "<<angka<<endl; cout<<"Variabel bilangan = "<<bilangan<<endl; cout<<"Variabelkabar = "<<kabar<<endl<<endl; cout<<"Alamatdarivariabel"<<endl; cout<<"Alamatvariabelangka = "<<&angka<<endl; cout<<"Alamat variabel bilangan = "<<&bilangan<<endl; cout<<"Alamatvariabelkabar = "<<&kabar<<endl; _getch(); }
DEKLARASI POINTER • Suatuvariabel pointer dideklarasikansebagaiberikut : tipeData* namaVariabel; atau tipeData *namaVariabel; • Tipe data dapatberupasembarangtipe data sepertihalnyapadapendefinisianvariabel, dannamavariabeladalahnamavariabel pointer. • Contoh : int *a; float *b, *c;// bukanfloat *b, c; int* nilai;
Agar pointer menunjukkevariabel lain, mula-mulaharusdiisidenganalamat dari variabel yang hendak ditunjuk. • Contoh : intnilai; //deklarasivariabelbiasa int *pNilai;//deklarasi variabel pointer • Pointer pNilaidiatur agar menunjukkevariabelnilai dengan cara : pNilai = &nilai; • Untuk mengakses nilai yang berada pada alamat yang ditunjuk oleh pointer (jadi variabel pointer = variabel), kita menggunakan operator " * “ pada variabel pointer.
intnilai; int *pNilai; nilai = 35; pNilai = &nilai; cout<<nilai<<endl; cout<<pNilai<<endl; cout<<*pNilai<<endl; • SetelahpernyataanpNilai = &nilai, makavariabelnilaidengan*pNilaimenjadisama. (tidakbisalangsungpenugasanvariabelkevariabel pointer pNilai = nilai; )
Perludiingatbahwa operator “ * “ padapernyataanint *pNilai;tidaksamadengan operator “ * “ padapernyataancout<<*pNilai<<endl; • Yang pertamaadalahdeklarasivariabel pointer bernamapNilai. Tanda “ * “ tersebuthanyamenyatakanbahwapNilaiadalahsuatu pointer. • Sedangkan yang keduatanda “ * “ adalah operator dereferensi yang menunjukkenilaidarivariabel yang alamatnyatersimpanoleh pointer pNilai. • Penggunaantanda “ * “ padasaatdeklarasi pointer dengandidalampernyataanharusdibedakan.
#include <iostream> #include <conio.h> using namespace std; void main() { intangka = 2011; intbilangan; int *add; inttes; bilangan = angka; add = &angka; tes = *add; cout<<"Variabelangka = "<<angka<<endl; cout<<"Variabel bilangan = "<<bilangan<<endl; cout<<"Pointer add = "<<add<<endl; cout<<"Variabel tes = "<<tes<<endl; cout<<"Alamatvariabel tes = "<<&tes; _getch(); }
INISIALISASI POINTER Suatu pointer dapatlangsungdiisinilaisaatpendeklarasian. Caranya : intangka; int *add = &angka; Pernyataaniniekivalendengan : intangka; int *add; add = &angka; Dan BERBEDA dengan : intangka; int *add; *add = &angka;
POINTER & ARRAY • Pointer dan array mempunyaihubungan yang dekat. Secara internal, array jugamenyatakanalamat. Misalkanterdapatsuatu array dansuatu pointer : intangka[5]; int *pArray; • Maka agar pointer pArraymenunjukke array angka, pernyataan yang valid adalah : pArray = angka; • Sebaliknya, pernyataan pArray = &angka; menjaditidak valid karenanama array sebenarnyasudahmenyatakanalamat. Olehkarenaitutanda & tidakdiperlukanlagi.
Meskipunpernyataan pArray = angka; bolehdilakukan, tetapiperintah / pernyataan angka = pArray; tidaklah valid. Hal inikarenatidaksepertialamatpada pointer pArray, alamatpada array angkatidakdapatdiubah. • Suatu array dapatdipandangsebagaikonstanta pointer.
SetelahbarispArray = angka;maka : Identifier angka[0] samadengan*pArray Identifier angka[1] samadengan*(pArray+1) Identifier angka[2] samadengan*(pArray+2) • Array pointer jugadapatdigeser. Misalkanmula-mulapArraymenunjukpadaangka[0], maka : intangka[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;
#include <iostream> #include <conio.h> using namespace std; void main() { intangka[5] = {1,2,3,4,5}; int *pArray = angka; pArray = angka; cout<<angka<<endl; cout<<pArray<<endl; cout<<*pArray<<endl; pArray++; cout<<*pArray<<endl; pArray+=2; cout<<*pArray<<endl; pArray=&angka[2]; cout<<*pArray<<endl; _getch(); }
LATIHAN • Terka output daripotongan program berikut : void main () { intabc = 5, def = 15; int *p1, *p2; p1 = &abc; p2 = &def; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout<<"isi abc : "<<abc<<endl; cout<<"isi def : "<<def; _getch(); }
Buatlahsebuah program C++ untukmenampilkanalamatdan yang ditunjukdarivariabel-variabeldibawahini : intharga = 35000; double diskon = 3.50; float desimal = 24.57897; • Buatlahsebuah program C++ untukmenampilkanseluruhelemendari array : intbilangan[10] = {10,20,30,40,50,60,70,80,90,100}; denganmenggunakan pointer.