Upload
suchin
View
45
Download
0
Embed Size (px)
DESCRIPTION
Pointer. Outline. Konsep pointer dalam bahasa C++ Variabel static dan dynamic Operator ‘ .’ dan ‘->’ Operator new dan delete, konstanta NULL Contoh program. POINTER UNTUK FUNCTION. C++ memperbolehkan operasi dengan pointer pada function. - PowerPoint PPT Presentation
Citation preview
Memory Dinamic 1/10
Teknik Pemrograman Terstruktur
Pointer
Memory Dinamic 2/10
Teknik Pemrograman Terstruktur
Outline
• Konsep pointer dalam bahasa C++
• Variabel static dan dynamic
• Operator ‘ .’ dan ‘->’
• Operator new dan delete, konstanta NULL
• Contoh program
Memory Dinamic 3/10
Teknik Pemrograman Terstruktur
POINTER UNTUK FUNCTION• C++ memperbolehkan operasi dengan pointer pada function. • Kegunaan yang utama adalah untuk memberikan satu
function sebagai parameter untuk function lainnya. • Deklarasi pointer untuk function sama seperti prototype
function kecuali nama function dituliskan diantara tanda kurung () dan operator asterisk (*) diberikan sebelum nama.
• contoh :// pointer to functions#include <iostream.h>int addition (int a, int b) {
return (a+b); }
int subtraction (int a, int b) { return (a-b); }
int (*minus) (int,int) = subtraction;
int operation (int x, int y, int (*functocall)(int,int)) { int g; g = (*functocall)(x,y); return (g); }
int main ( ) { int m,n; m = operation (7, 5, addition); n = operation (20, m, minus);cout <<n; return 0; }
• Output : 8
Memory Dinamic 4/10
Teknik Pemrograman Terstruktur
DYNAMIC MEMORY• OPERATOR new dan new[ ]
– Untuk meminta dynamic memory, digunakan operator new. Pernyataan new diikuti dengan tipe data dan jumlah elemen yang dibutuhkan didalam kurung siku [].
– Syntax : pointer = new type
atau pointer = new type [elements] – Bentuk pertama digunakan untuk meminta memory yang
digunakan untuk elemen tunggal. – Bentuk kedua untuk meminta sekumpulan(array) elemen.
Contoh :
int * bobby;
bobby = new int [5];• Contoh diatas akan menetapkan ruang untuk 5 elemen
bertipe int dalam heap dan memiliki pointer yang menunjuk ke tempat paling awal.
• Dynamic memory pada umumnya diatur oleh operating system, dan pada multitask interfaces dapat digunakan bersama beberapa aplikasi, sangat memungkinkan memory habis terpakai. Jika hal ini terjadi, maka akan mengembalikan pointer null. Karena alasan tersebut, maka dianjurkan untuk melakukan pemeriksaan apakah pointer yang diberikan bernilai null. Contoh :
int * bobby; bobby = new int [5];if (bobby == NULL) {
// error assigning memory. Take measures. };
Memory Dinamic 5/10
Teknik Pemrograman Terstruktur
• OPERATOR DELETE
– Ketika memory yang tadi diminta sudah tidak digunakan lagi maka, memory tersebut harus dibebaskan agar dapat digunakan untuk permintaan dynamic memory lainnya.
– Operator delete digunakan untuk mengatasi masalah ini,
– syntax : delete pointer;
atau delete [ ] pointer;
• FUNGSI malloc
– Merupakan function yang digunakan untuk menetapkan dynamic memory untuk pointer.
– Syntax : void * malloc (size_t nbytes);
– Dimana nbytes adalah jumlah dalam byte yang dibutuhkan untuk diberikan ke pointer.
– Function akan mengembalikan pointer bertipe void*, karena itu harus diberikan perintah type cast nilai ke tipe pointer tujuan.
– contoh : char * ronny;
ronny = (char *) malloc (10);
atau
int * bobby;bobby = (int *) malloc (5 * sizeof(int));
Memory Dinamic 6/10
Teknik Pemrograman Terstruktur
• FUNGSI calloc– hampir sama dengan malloc dalam operasinya,
perbedaan utamanya adalah prototype :
void * calloc (size_t nelements, size_t size);
– Memerlukan 2 buah parameter, elemen pertama adalah jumlah elemen yang diigunakan dan parameter yang kedua adalah ukuran dalam byte untuk setiap elemen.
int * bobby;bobby = (int *) calloc (5, sizeof(int));
• FUNGSI realloc– Merubah ukuran dari blok memory yang telah
ditetapkan sebelumnya.
void * realloc (void * pointer, size_t size);
– parameter pointer menerima pointer ke blok memory yang telah ada atau null pointer, dan size menetapkan ukuran yang baru untuk blok memory yang diminta.
– Function dapat merupak lokasi dari blok memory sehingga ukuran yang baru dapat terpenuhi dan isi dari memory yang lama tidak hilang.
Memory Dinamic 7/10
Teknik Pemrograman Terstruktur
• FUNGSI free– Melepaskan blok dari dynamic memory yang sebelumnya
ditetapkan dengan malloc, calloc atau realloc. – Syntax :
void free (void * pointer);
• STRUCT• Contoh :
// example about structuresstruct movies_t {
char title [50]; int year;} mine, yours;
void printmovie (movies_t movie);int main (){
char buffer [50]; strcpy (mine.title, "2001 A Space Odyssey"); mine.year = 1968; cout << "Enter title: "; cin.getline (yours.title,50); cout << "Enter year: "; cin.getline (buffer,50); yours.year = atoi (buffer); cout << "My favourite movie is:\n "; printmovie (mine); cout << "And yours:\n ";
printmovie (yours); return 0;}
void printmovie (movies_t movie){ cout << movie.title; cout << " (" << movie.year <<
")\n";}
Memory Dinamic 8/10
Teknik Pemrograman Terstruktur
• Output :Enter title: AlienEnter year: 1979My favourite movie is:2001 A Space Odyssey (1968)And yours:Alien (1979)
• POINTER PADA STRUCTURE– Sama seperti pada tipe lainnya, struktur juga dapat ditunjuk oleh
pointer. Aturannya sama untuk setiap tipe data.– Pointer harus dideklarasikan sebagai pointer untuk struktur :
struct movies_t { char title [50];int year;
};movies_t amovie;movies_t * pmovie;
• amovie merupakan object dari tipe struct movies_t dan pmovie adalah pointer untuk menunjuk ke objek dari tipe struct movies_t.
• deklarasi dibawah ini juga benar : pmovie = &amovie;
Memory Dinamic 9/10
Teknik Pemrograman Terstruktur
Referensi
• Herbert Schildt, The Complete Reference C++, Fourth Edition, McGraw-Hill/Osborne
• Antony Pranata, Pemrograman Borland C++, Andi Offset, Yogyakarta
• Online Reading, www://cplusplus.com
Memory Dinamic 10/10
Teknik Pemrograman Terstruktur
Kesimpulan
• Penggunaan memory dinamik dengan perintah malloc, calloc
• Mengembalikan memory yang tidak digunakan setelah eksekusi dengan perintah free
• Menggunakan struct sebagai parameter function dengan menggunakan pointer