10
Memory Dinamic 1/10 Teknik Pemrograman Terstruktur Pointer

Pointer

  • 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

Page 1: Pointer

Memory Dinamic 1/10

Teknik Pemrograman Terstruktur

Pointer

Page 2: 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

Page 3: Pointer

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

Page 4: Pointer

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.   };

Page 5: Pointer

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));

Page 6: Pointer

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.

Page 7: Pointer

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";}

Page 8: Pointer

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;

Page 9: Pointer

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

Page 10: Pointer

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