Jumat, 04 Januari 2013

POINTER C++


Sejarah Pointer di C++

Pointer adalah built-in type di C dan C++, dimana C++ mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan "Abstract C Machine", yaitu model mesin abstrak dimana program C bekerja. Abstract C Machine adalah mesin abstrak  dimana mesin tersebut memiliki prosesor untuk menginterpretasikan stream of  instruction, dan addressable memory yang terbagi kedalam 3 bagian : automatic  memory, static memory dan free memory. Addressable memory adalah memory yang  konten-nya dapat diambil jika diketahui alamatnya. Lebih jauh lagi, terdapat asumsi  bahwa konten memori dapat di ambil dengan waktu konstan, tidak peduli berapa nilai  alamat.Hal ini disebut dengan Random Access Memory.

Menurut Frieyadie. 2007. Edisi Revisi Buku Pemrograman C++ dengan Borland  C++ 5.02.

Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan  untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat  diketahui dengan mudah.
Arti pointer dalam bahasa sehari-hari adalah putunjuk atau bisa di bilang penentu  atau pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya mengarah  pada nilai yang terdapat pada sebuah area memori (alamat memori).namun dalam Dalam bahasa C, Pointer bisa berfungsi sebagai variabel arrayberarti pointer sebagai  penunjuk elemen array ke-0 dalam variabel C.


Kegunaan Pointer Di C++ :

Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class). Selain menyimpan alamat dari variabel, pointer juga dapat digunakan untuk  menyimpan alamat dari sebuahfungsi (function pointer).
Function pointer telah digunakan sejak dikenalkannya bahasa C,dan banyak
digunakan untuk sebuah fungsi callback atau untuk meningkatkan readability dari
sebuah code.

Pointer bisa juga berguna untuk :

1.      Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
2.      Untuk membuat variabel DINAMIS(Bukan variabel Statis)
penggunaan function pointer pada C++ dibatasi, yaitu function pointer tidak boleh
menunjuk pada function yang berada dalam sebuah class (class member function)
kecuali function tersebut berjenis static.


Tipe Data Pointer : 
Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer- nya. Contoh : 
1. Mensubstitusikan address sebuah variabel ke pointer dengan memakai address operator & 
    int x; 
    int *ptr; 
    ptr = &x; 

2. Mensubstitusikan address awal sebuah array ke pointer 
    char t[5]; char *ptr; ptr = t; 

3. Mensubstitusikan address salah satu elemen array dengan address operator 
    char t[5] ; char *ptr; ptr = &t[3]; 

4. Mensubstitusikan address awal character string ke pointer char 
    char *ptr; 
    ptr = "jakarta" 

5. Mensubstitusikan NULL pada pointer. 
NULL ada pointer kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan dengan sebuah address tertentu. 


Macam – macam Pointer 
  1. Pointer Bertipe Void
    Pada C++ terdapat pointer yang dapat menunjuk ke tipe data apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering dikenal dengan istilah Void Pointer. Berikut ini contoh listing program yang menggunakan void pointer.
  2. Pointer Aritmetika
    elemen-elemen array biasanya diakses melalui indeksnya, sebenarnya ada cara lain yang lebih efisien, yaitu dengan menggunakan pointer. Pointer semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar dari pointer aritmetika ini adalah melakukan operasi aritmetika terhadap variabel yang bertipe pointer.
  3. Pointer NULL
    Pada saat program dijalankan, pointer akan menunjuk ke alamat acak pada memori, sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi. Dalam C++ terdapat sebuah cara untuk membuat pointer tidak menunjuk ke alamat manapun, yaitu dengan mengisikan pointer tersebut dengan nilai NULL. Karena hal inilah maka pointer tersebut sering dinamakan pointer NULL (NULL Pointer).Se¬bagai contoh kita mempunyai pointer p, dan kita ingin melakukan inisialisasi pada pointer tersebut dengan nilai NULL, maka sintaknya adalah  P=NULL; 
Operasi-operasi Pointer 
  1. Operasi Penugasan
    Suatu variabel pointer seperti halnya variabel yang lain, juga bisa mengalami operasi penugasan. Nilai sari suatu variabel pointer dapat disalin ke variabel pointer yang lain.
  2. Operasi Aritmatika
    Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. 
  3. Operasi Logika
    Operasi logika juga dapat dilakukan pada sebuah variabel pointer.












 Contoh Program Pointer di C++
#include "stdio.h" 
 #include "conio.h" 
     
    void main() 
    { 
     int *point; 
     int a=7, b=15; 
     
     printf(" Nilai a : %d \n", a); 
     printf(" Alamat a : %p \n\n", &a); 
     
     point=&a; 
     
     printf(" Nilai point = %p \n", point); 
     printf(" Alamat point = %p \n", &point); 
     printf(" nilai rujukan point = %d \n\n", *point); 
     
     *point=10;  // nilai a diganti dengan nilai pointer 
     
     printf(" Nilai point = %p \n", point); 
     printf(" Alamat point = %p \n", &point); 
     printf(" nilai rujukan point = %d \n\n", *point); 
     
     printf(" Nilai a : %d \n", a); 
     printf(" Alamat a : %p \n\n", &a); 
     
     printf(" Nilai B : %d \n", b); 
     printf(" Alamat B : %p \n\n", &b); 
     
     point=&b;   // rujukan pointer diganti rujukan nilai b 
     
     printf(" Nilai point = %p \n", point); 
     printf(" Alamat point = %p \n", &point); 
     printf(" nilai rujukan point = %d \n\n", *point); 
     
     getch(); 
    } 

Tidak ada komentar:

Posting Komentar