Pointer
Pointer Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain
Tipe data *nama_var_pointer DEKLARASI POINTER Tipe data *nama_var_pointer operator bintang/ asterisk (*) char, float, int, double, long, dsb
Operator Pointer dibaca: isi variabel bil1 sama dengan alamat bil2 Operator Alamat / Dereference Operator(&) untuk mendapatkan alamat memori operand/ variable pointer. Cth: Bil1 = &Bil2; dibaca: isi variabel bil1 sama dengan alamat bil2 Operator Reference (*) untuk mengakses nilai data operand/ variable pointer. Bil1=*Bil2; dibaca: bil1 sama dengan nilai yang ditunjuk oleh bil2
Contoh: /Program :pointer1. cpp #include <iostream.h> #include<conio.h> // cetak p dan *p void main(void) { int v = 7, *p; p = &v; cout << "Nilai v = " << v << " dan *p = " << *p << " \nAlamatnya = " << p << 'n'; getch(); } Hasil dari program adalah sebagai berikut : Nilai v = 7 dan *p = 7 Alamatnya = efffb24
contoh2 #include <stdio.h> #include <conio.h> int main() { char pointerku[10]=""; pointerku[0]='a'; pointerku[1]='b'; printf("%s",pointerku); getch(); }
contoh3 #include <stdio.h> #include<conio.h> int main() { char pointerku[10]="pointerku"; char tampung[10]=""; if(pointerku[2]=='i') tampung[0]=pointerku[2]; } printf("%s",tampung); getch(); return 0;
POINTER (cont) Contoh program operator pointer : //Program :pointer2. cpp #include <iostream.h> Int main() { int *ptr, num; // 1 ptr = # // 2 *ptr = 100; // 3 cout << num << “ “; (*ptr)++; // 4 (*ptr)*2; // 5 cout << num << “\n “; return 0; }
POINTER (cont) Bila dijalankan hasilnya adalah sebagai berikut : 100 101 101 Penjelasan : 1. Kondisi variabel num menunjukkan angka 50 dan kondisi variabel pointer ptr masih kosong 2. Variabel pointer ptr menunjuk pada isi dari variabel num sehingga variabel pointer ptr isinya 50 3. Variabel num berisi angka 100 sedangkan variabel pointer ptr isinya tetap 50 4. Isi variabel num bertambah 1 dari 100 menjadi 101 5. Isi variabel num dari 101 menjadi 202. Hasil ini diperoleh dari 101*2 Pointer Aritmetika Ada 4 operator aritmetika yang digunakan yaitu : ++, = =, + dan – Contoh program yang dapat menampilkan 10 buah data yang mempunyai alamat berbeda-beda:
POINTER (cont) //Program :pointer3. cpp #include <iostream.h> int main() { int i [10], *i_ptr; double f[10], *f_ptr; int x; i_ptr = i; f_ptr = f; for(x=0; x<10; x++) cout << i_ptr+x << “ “ << f_ptr+x << “\n”; return 0; } Output Program : 0xeffffd9c 0xeffffd48 0xeffffda0 0xeffffd50 0xeffffda4 0xeffffd58 0xeffffda8 0xeffffd60 0xeffffdac 0xeffffd68 0xeffffdb0 0xeffffd70 0xeffffdb4 0xeffffd78 0xeffffdb8 0xeffffd80 0xeffffdbc 0xeffffd88 0xeffffdc0 0xeffffd90
POINTER (cont) Pointer Perbandingan Pointer dapat dibandingkan dengan Operator hubungan seperti !=, ==,<, dan >. //Program :pointer4. cpp #include <iostream.h> int main() { int num[10]; int *start, *end; start = num; end = &num[9]; while(start != end) { cout << “Masukkan bilangan sebanyak 9 data : ”; cin >> *start; start++; } return 0;
POINTER (cont) Konstanta String Dan Pointer Konstanta string terlihat dalam program teks dan disimpan dalam tabel. String Contoh Program pointer string //Program :pointer5. cpp #include <iostream.h> int main() { char *s; S = “Pointer mudah digunakan. \n”; cout << s; return 0; } Output : Pointer mudah digunakan
POINTER (cont) Array Pointer Pointer dapat di-array seperti tipe data lain dalam C++ integer contoh : Int *pi[10]; Contoh Program array pointer //Program :pointer6. cpp #include <iostream.h> int main() { Int numbers[5]; Int *p; p = numbers; *p = 10; p++; *p =20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; n<5; n++) cout << numbers[n] << “, “; return 0; } Output : 10, 20, 30, 40, 50,
POINTER (cont) Pointer Dalam Pointer address value pointer variable C++ memperbolehkan penggunaan pointer dalam pointer Yang masing-masing berisi data yang sama atau berbeda. address value pointer variable Pointer tunggal Pointer dalam pointer
POINTER (cont) Contoh : char a; char * b; char ** c; a = ‘z’ ; b = &a; c = &b;