Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehSur Bagus Telah diubah "9 tahun yang lalu
1
Pointer Implementasi pointer dalam pengalokasian memori
ALOKASI MEMORI “program = algorithm + data structure” Pointer Implementasi pointer dalam pengalokasian memori SUMBER : Struktur Data /3sks/Semester II (KELAS MALAM) Tahun Akademik @Maret 2013 – by M. Mahaputra Hidayat, S.Kom *dirangkum dari berbagai sumber dan ITS
2
Definisi Pointer Pointer Soal yang sebenarnya Apa ya pointer itu ?
Kerjakan soal no 2.a Soal yang sebenarnya Pointer tidak menampung data Pointer menampung alamat dari sel memori lain yang menampung nilai data yang dituju Apa ya pointer itu ? Struktur Data
8
Ilustrasi Pointer Memori Alamat Isi Sesudah dieksekusi Alamat Isi
1000 1001 200 : Sesudah dieksekusi p = 210 ?? 550 : Tambahkan 10 ke p Alamat Isi 1000 1001 200 : Sebelum dieksekusi p = 200 ?? 550 Memori : Tambahkan 10 ke data yang alamatnya tersimpan di p p = 200 ?? : 560 1000 1001 200 Sesudah dieksekusi Struktur Data
9
Cara Penulisan Pointer
int *ptr; int x=25; Int y=30; Alamat Isi : (&ptr) 1500 (&x) 1100 (&y) 1104 ptr = ? 30 25 Memori ptr x y ptr = &x; Alamat Isi : (&ptr) 1500 (&x) 1100 (&y) 1104 ptr = 1100 30 25 Memori ptr x y Alamat Isi : (&ptr) 1500 (&x) 1100 (&y) 1104 ptr = 1100 30 35 Memori *ptr += 10; ptr x y
10
Definisi Pointer dereferencing pointer
menyediakan akses tidak langsung ke suatu obyek obyek untuk mengakses obyek lain dapat mengakses data yang ditunjuk oleh pointer dereferencing pointer ... MEMORY 1 2 3 4 5 81345 81346 81347 Address foo 123 int foo; int *x; foo = 123; x = &foo; x 3
11
Set nilai ke dereferenced pointer
pointer harus memiliki nilai sebelum mengakses data yang ditunjuk (dereferenced ) int *x; *x=3; int foo; int *x; x = &foo; *x=3; &foo = alamat dari foo ERROR!!! x belum menunjuk suatu obyek!!! LEGAL. x menunjuk ke foo
12
Penggunaan pointer int *intPtr; intPtr = new int; *intPtr = 6837;
inisialisasi pointer int *intPtr; intPtr = new int; *intPtr = 6837; delete intPtr; int otherVal = 5; intPtr = &otherVal; alokasi memory address set isi dari pointer *intPtr 6837 intPtr 0x0050 membuang alokasi memory address merubah intPtr ke lokasi memory address lain *intPtr 5 otherVal intPtr 0x0054 &otherVal
13
Penggunaan pointer - nilai x berubah - nilai pointer ptr tetap
14
Penggunaan pointer int x = 5; int y = 7; int *ptr = &x; // LEGAL
int *ptr = &x; // ILLEGAL: x belum dideklarasikan int *ptr = x; // ILLEGAL: x bukan memory address int *ptr; // LEGAL: ptr belum diinisialisasi
15
Contoh Passing parameter
#include <iostream> using namespace std; … … … int main(){ int Boys = 3, Girls = 5; void PassByValue(int males, int females); void Reference(int &m, int &f); void Pointers(int *u, int *v); cout << "At startup, within main()"; cout << "\n\tBoys = " << Boys; cout << "\n\tGirls = " << Girls; cout << "\nPassing arguments by value = Copy"; PassByValue(Boys, Girls); cout << "\nAfter calling PassByValue(), within main()"; At startup, within main() Boys = 3 Girls = 5
16
Contoh Passing parameter
… … … cout << "\nPassing arguments by reference"; Reference(Boys, Girls); cout << "\nAfter calling Reference(), within main()"; cout << "\n\tBoys = " << Boys; cout << "\n\tGirls = " << Girls; cout << "\nPassing arguments pointers"; Pointers(&Boys, &Girls); cout << "\nAfter calling Pointers(), within main()"; cout << "\n"; system("PAUSE"); return 0; }
17
Contoh Passing parameter
#include <iostream> using namespace std; void PassByValue(int b, int g){ b += 3, g += 4; cout << "\nWithin PassByValue(), now"; cout << "\n\tBoys = " << b; cout << "\n\tGirls = " << g; } void Reference(int &b, int &g){ cout << "\nWithin Reference(), now"; void Pointers(int *b, int *g){ *b += 3, *g += 4; cout << "\nWithin Pointers(), now"; cout << "\n\tBoys = " << *b; cout << "\n\tGirls = " << *g; int main(){ … … … At startup, within main() Boys = Girls = 5 Passing arguments by value = Copy Within PassByValue(), now Boys = 6 Girls = 9 After calling PassByValue(), within main() Boys = 3 Girls = 5 PassByValue(Boys, Girls); Passing arguments by reference Within Reference(), now Boys = 6 Girls = 9 After calling Reference(), within main() Reference(Boys, Girls); Passing arguments pointers Within Pointers(), now Boys = Girls = 13 After calling Pointers(), within main() Pointers(&Boys, &Girls);
18
Diskusi Any Questions??
19
Tugas Dikumpulkan paling lambat tanggal 11 Maret 2013, pukul 24
Tugas Dikumpulkan paling lambat tanggal 11 Maret 2013, pukul wib via saya, format pdf sertakan foto anda disebelah nama. Jelaskan (tracing) dan tentukan output dari Soal 1 dan Soal 2 ! Jelaskan perbedaan antara Soal 3 dan Soal 4, kemudian tentukan output dari kedua soal tersebut !
20
Ballighu’ anniy walau aayatun . . . Sebarkanlah ilmu walau satu ayat . . .
Thank’s for your attention, Surabaya, 05 Maret 2013
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.