Pointer Pointer Variabel yang berisi alamat memori sebagai
Pointer
Pointer § § Variabel yang berisi alamat memori sebagai nilainya yang berisi nilai tertentu. Deklarasi: Type *variable name di mana: o Type = tipe dasar pointer o Variable name=nama variabel pointer o * = operator memori yang berfungsi mengembalikan nilai variabel pada alamatnya.
Contoh Program 1 //Program aplikasi pointer //dibuat oleh nurlina //email: ptiknurlina@yahoo. com #include<iostream> using namespace std; main (){ int q=7, *p; p=&q; cout<<"nilai q= "<<q<<"dan *p= "<<*p <<" n Alamatnya= "<<p<<'n'; return 0; }
Hasil Kompilasi
Contoh Program 2 //Program aplikasi pointer 1 //dibuat oleh nurlina //email: ptiknurlina@yahoo. com #include <iostream> using namespace std; main() { long *P; long X; P = &X; X = 10; // Mengisikan nilai 10 ke dalam variabel X cout<<"Nilai X *P P &X *P = 200; } cout<<"Nilai return 0; : : "<<X<<endl; "<<*P<<endl; "<<&X<<endl; // Mengisikan nilai 200 ke dalam *P X *P P &X : : "<<X<<endl; "<<*P<<endl; "<<&X<<endl;
Hasil Kompilasi
Memasukkan Nilai Pada Pointer Tipe data dari pointer harus sama dengan tipe data dari variabel yang akan menempatinya. § § Contoh Sintaks Programnya: double *p; int x; /*mendeklarasikan variabel bertipe integer*/ p =&x /* salah, karena p hanya dapat menyimpan variabel yang bertipe double*/
Pointer Tanpa Tipe § Pointer yang dideklarasikan untuk menunjuk ke semua tipe data. § Pointer ini dinamakan dengan void pointer. Deklarasi: void *nama_pointer;
Contoh Program // Program aplikasi pointer tanpa tipe // Oleh nurlina // Email: ptiknurlina@yahoo. com #include <iostream> using namespace std; main() { void *P; /* Mendeklarasikan pointer P sebagai pointer tanpa tipe*/ // Mendeklarasikan variabel X, Y dan Z dengan tipe berbeda int X; long Y; doble Z; // Memerintahkan P untuk menunjuk ke alamat dari variabel X P = &X; X = 10; // Mengisikan variabel X dengan nilai 10 cout<<"Nilai X : "<<X<<endl; cout<<"Nilai P : "<<P<<endl; cout<<"Alamat &X : "<<&X<<endl; // Memerintahkan P untuk menunjuk ke alamat dari variabel Y P = &Y; Y = 200; // Mengisikan variabel Y dengan nilai 2000 cout<<'n'<<"Nilai Y : "<<Y<<endl; cout<<"Nilai P : "<<P<<endl; cout<<"Alamat &Y : "<<&Y<<endl; // Memerintahkan P untuk menunjuk ke alamat dari variabel Z P = &Z; Z = 2000; // Mengisikan variabel Z dengan nilai 21. 0378 cout<<'n'<<"Nilai Z : "<<Z<<endl; cout<<"Nilai P : "<<P<<endl; cout<<"Alamat &Z : "<<&Z<<endl; return 0; }
Hasil Kompilasi
Konstanta Pada Pointer § Pointer juga dapat bernilai konstan, yaitu menggunakan kata kunci const dapat ditempatkan sebelum tipe data, sesudah tipe data ataupun pada keduanya § Kata
Sebelum Tipe Data Deklarasi: const tipe_data *nama_pointer; § Bentuk di atas berarti bahwa pointer akan menunjuk ke nilai dengan tipe data tertentu di mana nilai tersebut bersifat tetap
Contoh Program /*Program Aplikasi Pointer Konstanta Sebelum Tipe Data*/ #include <iostream> using namespace std; main() { const int *P 1; // P 1 akan menunjuk ke tipe data int // yang bersifat tetap int X, Y; X = 5; Y = 10; P 1 = &X; cout<<"Nilai X: "<<X<<endl; cout<<"Nilai P 1: "<<P 1<<endl; // *P 1 = 5; // SALAH, karena nilai yang ditunjuk oleh P 1 // (nilai *P 1) bersifat tetap } P 1 = &Y; // BENAR, karena pointer P 1 tidak bersifat tetap cout<<"Nilai Y: "<<Y<<endl; cout<<"Nilai P 1: "<<P 1<<endl; return 0;
Hasil Kompilasi
Sesudah Tipe Data Deklarasi: tipe_data * const nama_pointer; Disini pointer bersifat tetap sehingga alamatnya tidak dapat diubah § Namun nilai dari variabel yang ditunjuk dapat diubah §
Contoh Program // Program aplikasi konstanta sesudah tipe data #include <iostream> using namespace std; int main() { int X=5, Y=10; int *const P 2 = &X; /* P 2 akan menunjuk ke alamat yang tetap, yaitu alamat X */ cout<<"Nilai X= "<<X<<endl; cout<<"Nilai P 2= "<<P 2<<endl; *P 2 = 2; // BENAR, karena nilai *P 2 dapat diubah // P 2 = &Y; // SALAH, karena pointer P 2 tidak bersifat tetap } return 0;
Hasil Kompilasi
Sebelum dan Sesudah Tipe Data Deklarasi: const tipe_data * const nama_pointer; Disini pointer konstan menunjuk ke suatu nilai yang konstan § Berarti pointer menunjuk alamat yang tetap dan nilai yang tetap §
Contoh Program // Program aplikasi Konstanta Sebelum dan Sesudah Tipe Data #include <iostream> using namespace std; int main() { int X=5, Y=10; const int * const P 2 = &X; /* P 2 akan menunjuk ke alamat yang tetap, yaitu alamat X dan nilai yang ditunjuk juga tetap */ cout<<"Nilai X= "<<X<<endl; cout<<"Nilai P 2= "<<P 2<<endl; // *P 2 = 2; // SALAH, karena nilai *P 2 tidak dapat diubah
Hasil Kompilasi
Pointer Aritmetika § Hanya 4 operator aritmetka yang dapat digunakan pada pointer, yaitu: ++, == , + , dan -
Contoh Program //Program aplikasi Pointer Aritmetika #include<iostream> using namespace std; main(){ int i[10], *i_ptr; double j[10], *j_ptr; int x; i_ptr=i; j_ptr=j; for(x=0; x<10; x++) cout<<i+x<<" "<<j+x<<endl; return 0; }
Hasil Kompilasi
Pointer Perbandingan § Pointer dapat dibandingkan dengan menggunakan operator hubungan, misalnya: !=, ==, <, dan >
Contoh Program //Program Aplikasi Pointer Perbandingan #include<iostream> using namespace std; main(){ int num[10]; int *start, *end; start=num; end=&num[9]; while(start !=end){ cout<<"Masukkan bilangan sebanyak 9 kali: "; cin>>*start; start++; } return 0;
Hasil Kompilasi
String dan Pointer § String dapat ditampilkan dalam program teks dan disimpan dalam tabel string dengan menggunakan pointer
Contoh Program //Program Aplikasi Konstanta String dan Pointer #include<iostream> using namespace std; main(){ char *s; s="Pointer mudah digunakan n"; cout<<s; return 0; }
Hasil Kompilasi
Array Pointer dapat di array seperti tipe data yang lain dalam tipe integer Misalnya: int *pi[10]; § Untuk menentukan alamat dari variabel integer disebut var Contoh: § int var; pi [2] = &var;
Contoh Program //Program Aplikasi Array Pointer #include<iostream> using namespace std; main(){ int bilangan[5]; int *p; p=bilangan; *p=10; p++; *p=20; p=&bilangan[2]; *p=30; p=bilangan+3; *p=40; p=bilangan; *(p+4)=50; for(int p=0; p<5; p++) cout<<bilangan[p]<<"n"; return 0; }
Hasil Kompilasi
Pointer dalam Pointer normalnya berisi alamat dari sebuah objek (variabel) yang menyimpan nilai berupa data § Deklarasi pointer dalam pointer menggunakan tanda asterisk sebanyak dua kali (**) Contoh: int **p; §
Contoh Program //Program Aplikasi Pointer dalam Pointer #include<iostream> using namespace std; main(){ int x, *p, **q; x=10; p=&x; q=&p; cout<<**q<<endl; return 0; }
Hasil Kompilasi
Terima Kasih
- Slides: 36