Pointer
• Pointer (variabel penunjuk) adalah suatu variabel yang
berisi alamat memori dari objek (variabel) lain.
Pointer *pointer_umur dan *pointer2 menggunakan referensi
alamat memori 0001. Alamat memori ini merupakan alamat
memori dari variabel umur.
Dengan begini..
Pointer akan bisa mengakses data yang tersimpan di dalam
alamat memori tersebut.
Mari kita lihat contoh berikut.
Contoh:
/Program :pointer1. cpp Hasil dari program:
#include <iostream.h> Nilai v = 7 dan *p = 7
#include<conio.h> Alamatnya = efffb24
using namespace std;
// cetak p dan *p
int main ( )
{
int v = 7, *p;
p = &v;
cout << "Nilai v = " << v << " dan *p = " <<
*p
<< " \nAlamatnya = " << p << 'n';
getch();
}
POINTER (cont)
Contoh program operator pointer : Penjelasan :
//Program :pointer2. cpp 1. Kondisi variabel num
#include <iostream.h> menunjukkan angka 50 dan
kondisi variabel pointer
using namespace std; ptr masih kosong
int main() 2. Variabel pointer ptr
{ menunjuk pada isi dari
variabel num sehingga
int *ptr, num; // 1 variabel pointer ptr isinya
ptr = # // 2 50
*ptr = 100; // 3 3. Variabel num berisi angka
cout << num << “ “; 100 sedangkan variabel
pointer ptr isinya tetap 50
(*ptr)++; // 4 4. Isi variabel num
cout << num << “ “; bertambah 1 dari 100
(*ptr)*2; // 5 menjadi 101
cout << (*ptr)*2 << "\n "; 5. Isi variabel num dari 101
cout << num << “\n “; menjadi 202. Hasil ini
diperoleh dari 101*2
return 0;
}
Bila dijalankan hasilnya adalah:
100 101 101
POINTER (cont)
Konstanta String Dan Pointer
Konstanta string terlihat dalam program teks dan
disimpan dalam tabel.
String
Output :
Pointer mudah digunakan
POINTER (cont)
Pointer Dalam Pointer
C++ memperbolehkan penggunaan pointer dalam pointer
Yang masing-masing berisi data yang sama atau berbeda.
pointer variable
address value
Pointer tunggal
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)
int main() {
float *x1, *x2, y;
y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<<x1;
cout<<"\nNilai variabel y = "<<y<<" ada di alamat "<<x2;
getch();
}
POINTER (cont)
Pointer Perbandingan
Pointer dapat dibandingkan dengan Operator
hubungan seperti !=, ==,<, dan >.
Output :
10, 20, 30, 40, 50,
POINTER DGN ARRAY
#include <iostream.h>
#include <conio.h>
void main(){
int tgl_lahir[] = { 13,9,1982 };
int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array */
cout<<"Diakses dengan pointer\n";
cout<<"Tanggal = "<< *ptgl;
cout<<"\nBulan = "<< *(ptgl + 1);
cout<<"\nTahun = "<< *(ptgl + 2);
cout<<"\nDiakses dengan array biasa\n";
cout<<"Tanggal = "<< tgl_lahir[0];
cout<<"\nBulan = "<< tgl_lahir[1];
cout<<"\nTahun = "<< tgl_lahir[2];
getch();
}
31
PEMBERIAN NILAI ARRAY DGN
POINTER
//Contoh Program7
#include <iostream.h>
#include <conio.h>
void main(){
int x[5], *p, k;
clrscr();
p = x;
x[0] = 5;
x[1] = x[0]; /* x[1] diisi dengan x[0] sehingga x[1] = 5 */
x[2] = *p + 2; /* x[2] diisi dengan x[0] + 2 sehingga x[2] = 7 */
x[3] = *(p+1)-3; /* x[3] diisi dengan x[1] - 3 sehingga x[3] = 2 */
//x[4] = *(x + 2); /* x[4] diisi dengan x[2] sehingga x[4] = 7 */
x[4]=*(p+2)-1;
for(k=0; k<5; k++)
cout<<"\nx["<<k<<"] = "<< x[k];
getch();
}
Latihan 1: Buat inputan
scr dinamis
// more pointers // more pointers (Jawaban)
#include <iostream.h> #include <iostream.h>
#include <conio.h>
int main () #include <conio.h>
{ int main ()
char array[5]; {
char * p; char array[5];
p = array; *p = 'a';
char * p; p = array;
p++; *p = 'b';
p = &array[2]; *p = 'c'; for (int i=0;i<=4;i++)
p = array + 3; *p = 'd'; { cout<<"\nInput array["<<i<<"]=";cin>>*p;
p = array; *(p+4) = 'e'; p++;
for (int n=0; n<5; n++) }
cout << array[n] << ", ";
for (int n=0; n<5; n++)
getch();
} cout << array[n] << ", ";
getch();
}
Latihan 2: Berikan keterangan dan
outputnya
#include <iostream>
#include <conio>
34
Pointer dalam Pemrograman
Berorientasi Objek
Peubah Statis
• Nama peubah yang digunakan untuk mewakili suatu nilai data
sebenarnya merupakan suatu lokasi tertentu di memory
komputer. Pada saat sebuah program dikompilasi, compiler
akan melihat pada deklarasi peubah untuk mengetahui nama-
nama peubah apa saja yang akan digunakan sekaligus
mengalokasikan tempat dalam memory untuk menyimpan data
tersebut.
• Hal ini menunjukkan bahwa sebelum program dieksekusi,
lokasi-lokasi data dalam memory sudah ditentukan dan tidak
dapat diubah selama program tersebut dieksekusi. Perubah-
perubah jenis ini dinamakan peubah statis (static variable).
Peubah Dinamis (Pointer)
• Tipe data pointer dapat digunakan untuk pemrograman yang
membutuhkan pengalokasian memory yang bersifat dinamis.
Konsep pengalokasian memory secara dinamis sangat
berguna sehingga lokasi memory dapat digunakan seefisien
mungkin. Pemrograman dengan tipe data ini hanya akan
mengalokasikan memory saat program dieksekusi.
• Perubah dinamis (dynamic variable) berlaku sebaliknya, yaitu
lokasi memory hanya akan dialokasikan pada saat program
dieksekusi, sehingga ukuran memory yang digunakan akan
selalu berubah. Perubah dinamis diterapkan dengan
menggunakan tipe data pointer dan struktur data class.
Buatlah Program berikut.
#include <iostream> int main() {
#include <string> X* namaA = new X;
X* namaB = new X;
using namespace std; namaA->data = "Adi";
namaB->data = "Budi";
class X { cout << namaA->data << endl;
public: cout << namaB->data << endl;
string data; }; system("pause");
return 0;
}
Buatlah Program berikut.
#include <iostream> int main() {
#include <string> X* namaA = new X;
using namespace std; namaA->data = "Adi";
cout << "Nama A adalah : " << namaA->data << endl;
class X { X* namaB = new X;
public: X* namaC = new X;
string data; }; namaC->data = "Budi";
namaA->data = namaC->data;
namaB->data = namaC->data;
cout << "Nama A adalah : " << namaA->data << endl;
cout << "Nama B adalah : " << namaB->data << endl;
system("pause");
return 0;
}
Buatlah Program berikut.