Pengertian Pointer
Operator Pointer
Ada dua operator yang digunakan pada tipe data pointer yaitu:
a. Operator Deference (&)
Operator ini biasanya disebut dengan address of atau operator alamat. Dengan menggunakan operator deference (&) ini, suatu variabel akan menghasilkan alamat memori.
Contoh:
int x = 45;
cout << &x;
Pada program di atas, akan ditampilkan alamat memori dari variabel x, bukan nilai x.
b. Operator reference (*)
Operator ini biasanya disebut value pointed by. Dengan menggunakan operator ini, kita dapat mengakses secara langsung nilai yang terdapat pada suatu alamat memori.
Contoh:
int x = 45;
cout <<*&x;
Pada program di atas, akan ditampilkan nilai dari alamt memori &x.
Mendeklarasikan Variabel Pointer
Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut:
tipe_data *nama_variabel
- tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan pointer.
- nama_variabel adalah nama variabel pointer.
Contoh1:
#include <iostream.h>
#include <conio.h>
void main() {
int x, y; int *px;
x = 89;
y = x;
px = &x;
cout << "Nilai x = " << x << endl;
cout << "Nilai y = " << y << endl;
cout << "Alamat px = " << px << endl;
cout << "Nilai px = " << *px << endl;
getch();
}
Output:
Nilai x = 89
Nilai y = 89
Alamat px = 0×0012ff88
Nilai px = 89
Pointer Pada Pointer
Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat pula menunjuk ke pointer lainnya. Dalam pendeklarasiannya, kita tambahkan pointer reference (*) pada variabel yang akan ditunjuk.
Contoh:
int x;
int *px; //pointer ke variabel int
**ppx; //pointer pada pointer
x = 100;
px = &nama;
ppx = &pNama;
Contoh Program:
#include <iostream.h>
#include <conio.h>
void main() {
int x;
int *px; //pointer ke variabel
int **ppx; //pointer ke pointer
x = 175;
px = &x;
ppx = &px;
cout << "Nilai x = " << x << endl;
cout << "Nilai px = " << *px << endl;
cout << "Nilai ppx = " << **ppx << endl;
getch();
}
Output:
Nilai x = 175
Nilai px = 175
Nilai ppx = 0×0012ff88
Pointer Pada Array
Pada Array/Larik, pointer hanya perlu menunjukan alamat elemen pertama saja karena alamat array dalam memori sudah disusun secara berurutan.
Contoh:
int a[] = {76, 67, 88, 98};
int *pa;
pa = a;
Pernyataan pa=a artinya pointer pa menyimpan alamat array a, yang alamatnya diwakili alamat elemen pertama, yaitu a[0]. Kita juga bisa mengganti perintah pa=a dengan pa=&a[0]. Untuk pembacaan semua elemen array dengan pointer, bisa menggunakan perulangan seperti pada penggalan program berikut.
for (int i=0; i < 4; i++) {
cout << *pa << " ";
pa++;
}
Contoh Program:
#include <iostream.h>
#include <conio.h>
#define MAX 5
void main() {
int a[MAX];
int *pa; pa = a; //atau pa = &a[0]
for (int i = 0; i < MAX; i++) {
cout << "Masukkan Nilai " << i+1 << " : ";
cin >> a[i];
}
cout << endl;
for (int i = 0; i < MAX; i++) {
cout << "Nilai a[" << i << "] = " << *pa << endl;
pa++;
}
getch();
}
Output:
Masukkan Nilai 1 : 100
Masukkan Nilai 2 : 120
Masukkan Nilai 3 : 50
Masukkan Nilai 4 : 111
Masukkan Nilai 5 : 47
Nilai a[0] = 100
Nilai a[1] = 120
Nilai a[2] = 50
Nilai a[3] = 111
Nilai a[4] = 47
Pointer pada String
Pointer pada string dapat anda lihat pada contoh program berikut:
#include <iostream.h>
#include <conio.h>
#define MAX 5
void main() {
char nama[] = "Albert Einstein";
char *pNama = nama;
cout << "Nama = " << nama << endl;
cout << "pNama = " << pNama << endl;
pNama += 7; cout << "\nSetelah pNama += 7" << endl;
cout << "Nama = " << nama << endl;
cout << "pNama = " << pNama << endl;
getch();
}
Output:
Nama = Albert Einstein
pNama = Albert Einstein
Setelah pNama += 7
Nama = Albert Einstein
pNama = Einstein
Tidak ada komentar:
Posting Komentar