Friday, October 12, 2012

MAKALAH VARIABEL POINTER

Konsep Dasar Pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.  Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer).  Sebagai contoh, px adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px.  Kalau x berada pada alamat memori (alamat awal) 1000, maka px akan berisi 1000. 




Mengatur Pointer agar Menunjuk ke Variabel Lain
       Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk.  Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel.  Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka &x berarti “alamat dari variabel x”.  Adapun contoh pemberian alamat x ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu :
px = &x;
 
 
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x.  Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.

Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung).  Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol * (bersifat unary).  Contoh penerapan operator * yaitu :
*px
yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” .  Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut


px = &x;
y = *px;
 
 


y akan berisi nilai yang sama dengan nilai x.
Kedua pernyataan di atas


px = &x;
y = *px;
 
 


sebenarnya dapat digantikan dengan sebuah pernyataan berupa
y = x;
Seandainya pada program di atas tidak terdapat pernyataan


px = &x;

 
 



namun terdapat pernyataan


y = *px;
 
 


maka y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk ke variabel x.  Hal seperti ini harap diperhatikan.  Kalau program melibatkan pointer, dan pointer belum diinisialisasi, ada kemungkinan akan terjadi masalah yang dinamakan “bug” yang bisa mengakibatkan komputer tidak dapat dikendalikan (hang).
        Selain itu tipe variabel pointer dan tipe data yang ditunjuk harus sejenis.  Bila tidak sejenis maka akan terjadi hasil yang tidak diinginkan.
Untuk lebih jelasnya lihat gambar berikut.



 
3.        Dasar Penggunaan Pointer
Dalam sistem komputer, semua bagian di memory dapat diasosiasikan dengan suatu nilai numerik yang disebut address atau alamat di memory. Dengan demikian, setiap bagian di memory dapat diakses menggunakan alamat. Pointer adalah tipe data dalam bahasa pemrograman yang berisi alamat di memory tersebut. Ini berarti pointer adalah sebuah tipe data yang isinya menunjuk ke data lain di memory.
Dalam bahasa pemrograman C++, khususnya pada tingkat yang lebih lanjut, peran pointer sangatlah penting, meskipun di sisi lain dapat menimbulkan malapetaka. Pointer memiliki kekuatan besar dalam membangun struktur data dan dapat dimanfaatkan untuk mengelola memori secara akurat. Di sisi lain, dalam penggunaan pointer, sangat mudah terjadi salah pakai yang bisa menimbulkan error yang sulit dicari penyebabnya, yaitu access violation. Karena peran pointer yang sangat besar dalam menghasilkan program yang efektif, seseorang tidak akan bisa menjadi programmer handal bila tidak memiliki pengetahuan yang baik tentang pointer.
Operator Pointer ada dua, yaitu :
Ø  Operator &
Operator & bersifat unary (hanya memerlukan satu operand saja).
Operator & menghasilkan alamat dari operandnya.
Ø  Operator *
Operator * bersifat unary (hanya memerlukan satu operand saja).
Operator * menghasilkan nilai yang berada pada sebuah alamat.

Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh:
#include <conio.h>
#include <iostream.h>
 main(void)
{
    int yofrie = 93;
    int *hadiansyah ;
    clrscr();
    cout << "Nilai awal yofrie = " << yofrie << endl;
    hadiansyah = &yofrie;
    cout << "Nilai awal hadiansyah = ";
    cout << *hadiansyah << endl;
    *hadiansyah = 70;
     cout << "Nilai hadiansyah sekarang = ";
     cout << *hadiansyah << endl;
     getch();
     return 0;
}
POINTER DAN STRING
Contoh
#include <iostream.h>
#include <conio.h>
void misteri1(char *);
 main() {
char string[] = "STMIK Amikom Purwokerto";
cout<< "Selamat Datang Di " << string <<"\n" ;
misteri1(string);
cout<<"Panji Mahasiswa "<<string;
getch();
}
void misteri1(char *s) {
while ( *s != '\0' ) {
if ( *s >= 'a' && *s <= 'z' )
*s -= 32;
++s;
}
}



 

0 komentar:

Post a Comment