1. Dokumen ini membahas tentang pointer, termasuk penjelasan bahwa pointer berisi alamat suatu data, contoh pendeklarasian pointer, dan manfaat pointer seperti mengubah isi argumen fungsi dan membuat struktur data dinamis.
2. Juga diberikan contoh kode untuk menggunakan pointer untuk mengakses data, array, string, dan fungsi.
3. Pointer dapat menunjuk ke data, pointer lain, atau fungsi.
3. Pointer adalah variabel yang berisi alamat suatu data. Hal ini yang
membedakan pointer dengan variabel non pointer data(bukan alamat data)
8/5/2017
Menny
cendana25.blogspot.com
Int p; // non pointer Int *p; //pointer
4. Ya, pointer memang berisi alamat. Melalui hal ini, dimungkinkan untuk mengubah isi
argument pada pemanggilan fungsi oleh fungsi. Selain itu pointer memungkinkan
pembuatan struktur seperti antrian ataupun senarai berantai, yang memungkinkan
data dapat ditambah atau di kurangi secara dinamis
8/5/2017
Menny
cendana25.blogspot.com
Cara menggunakan pointer
POINTER berisi alamat ? Manfaatnya apa ?
Cara mendeklarasikan pointer dan mengisikan nilai ke dalam variabel pointer.
Deklarasi pointer sebagai berikut:
Tipe *variabelpointer
5. Contoh:
8/5/2017
Menny
cendana25.blogspot.com
Int *pbil;
Contoh ini menyatakan pointer pbil
yang akan menunjuk data bertipe int
Int bilx = 77;
Akses melalui pointer Akses melalui non-pointer
*pbil=32; Bilx = 32;
*pbil = *pbil-2 Bilx= bilx-2
Cout<< *pbil<<endl; Cout <<bilx <<endl;
Cin>> *pbil; Cin >> bilx;
Pengaksesan data melalui variabel pointer dan no-pointer
6. latihan
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
int *pBil;
int bilX = 77;
pBil = &bilX;
cout << "Isi bilX = " << bilX << endl;
cout << "Nilai yang ditunjuk pBil = "
<< *pBil << endl;
*pBil = *pBil + 3;
cout << "Isi bilX sekarang = " << bilX << endl;
cout << "Nilai yang ditunjuk pBil = "
<< *pBil << endl;
return 0;
}
7. Apakah isi pointer bissa ditempilkan dengan cout ? Ya, daapat di lihat
pada contoh program berikut ini :
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
int *pBil;
int bilX = 77;
pBil = &bilX;
cout << "Isi pBil = " << pBil << endl;
cout << "Nilai yang ditunjuk pBil = "
<< *pBil << endl;
return 0;
}
8. Mengubah nilai argumen fungsi melalui pointer. Ya, dapat dilihat
pada contoh program berikut:
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
void ubah(int *x);
int main() {
int arg = 12;
cout << "isi arg semula = " << arg << endl;
ubah(&arg);
cout << "isi arg sekarang = " << arg << endl;
return 0;
}
void ubah(int *x) {
*x = 34;
}
9. Apakah pointer bisa digunakan untuk menunjuk string ? YA, Namun karena
STRING terbagi atas 2 macam maka penganganannya juga berbeda.
8/5/2017
Menny
cendana25.blogspot.com
J 0ZZA
Array Karakter: data
Char *musik=data;
Jazz
String yang ditunjuk ileh pointer musik
String *musik=new string(“JAZZ”);
10. Pada array karakter, cara untuk mengakses isi array melalui pointer ?
Untuk kepentingan ini kita membutuhkan 2 buah pointer , tujuannya adalahagar
salah satuh pointer tetap menunjukke awal string, sedangkan pointer yg kedua
bisa digesr untuk menunjukkarakter yg diakses; contoh program berikut :
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
char data[] = "Jazz";
char *musik = data;
char *tmp; // Pointer yang menunjuk ke char
tmp = musik; // Pointer tmp menunjuk ke data
// yang ditunjuk oleh musik
int indeks = 0;
while (tmp[indeks]) {
cout << tmp[indeks] << endl;
indeks++;
}
return 0;
}
12. Contoh lain program untuk mengakses karakter yg ditunjuk pointer:
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
char data[] = "Jazz";
char *musik = data;
char *tmp; // Pointer yang menunjuk ke char
tmp = musik; // Pointer tmp menunjuk ke data
// yang ditunjuk oleh musik
int indeks = 0;
while (*tmp) {
cout << *tmp << endl;
tmp++;
}
return 0;
}
13. Contoh program yang terdiri dari elemen-elemen array bertipe int
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
int bilangan[] = {77, 66,55, 44, 33, 22, 11};
int *ptr = bilangan;
int jumData = sizeof(bilangan) / sizeof(int);
cout << "Cara pertama:" << endl;
for (int i = 0; i < jumData; i++)
cout << *(ptr + i) << endl;
cout << "Cara kedua:" << endl;
for (int i = 0; i < jumData; i++)
cout << ptr[i] << endl;
return 0;
}
14. Dapatkah suatu array berisi pointer ?
Cth: string *mermobil[5]
8/5/2017
Menny
cendana25.blogspot.com
HONDA
MITSUBISHI
KIA
HYUNDAI
TOYOTA
Array merkmobil
Tipe string
15. Contoh program
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
string *merkMobil[5];
// Pengisian ke pointer
merkMobil[0] = new string ("Honda");
merkMobil[1] = new string("Hyundai");
merkMobil[2] = new string("Kia");
merkMobil[3] = new string("Mitsubishi");
merkMobil[4] = new string("Toyota");
for (int i = 0; i < 5; i++)
cout << *merkMobil[i] << endl;
return 0;
}
16. Apa yang dimaksud dengan pointer 0 ?
Adalah pointer yg tidak menunjuk ke data manapun. Nilainya
diisi dengan nol atauNULL
contoh:
int *p;
p=0;
8/5/2017
Menny
cendana25.blogspot.com
Pointer yang menunjuk ke suatu fungsi adalah untuk melewatkan fungsi
sebagai argumen. Dalam argumen fungsi pointer yg menunjuk ke fungsi
ditulis dengan bentuk :
Tipe (*fungsi)(argumen1, argumen2…)
Perhatikan contoh program berikut ini:
17. 8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
// Prototipe
int penjumlahan (int a, int b);
int pengurangan (int a, int b);
int operasi (int x, int y, int
(*panggilFungsi)(int,int));
int main () {
int m,n;
int (*minus)(int,int) = pengurangan;
m = operasi (7, 5, penjumlahan);
n = operasi (20, m, minus);
cout << n;
return 0;
}
int penjumlahan (int a, int b) {
return (a+b);
}
int pengurangan (int a, int b) {
return (a-b);
}
int operasi (int x, int y, int
(*panggilFungsi)(int,int)) {
int hasil;
hasil = (*panggilFungsi)(x,y);
return (hasil);
}
18. Pointer yang munjuk ke pointer:
8/5/2017
Menny
cendana25.blogspot.com
ptr1 ptr2 Just the way you are
Pointer ptr1 menunjuk ke pointer ptr2
Contoh program berikut ini:
19. 8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
int main() {
string lagu = "Just The Way You Are";
string *ptr2; // satu tanda *
string **ptr1; // dua tanda ** // Buat hubungan antara
pointer dan data
// yang ditunjuk
ptr2 = &lagu;
ptr1 = &ptr2; // Tampilkan data
cout << "Via ptr2: " << *ptr2 << endl;
cout << "Via ptr1: " << **ptr1 << endl;
return 0;
}
20. Pointer bisa menjadi nilai balik fungsi
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
using namespace std;
char *posisiKar(char str[], char kar);
int main() {
char teks[] = {"Tes...tes...123"};
// Tampilkan mulai posisi pointer hingga
// karakter null dijumpai
char *ptr = posisiKar(teks, 't');
while (*ptr != '0') {
cout << *ptr;
ptr++;
}
cout << endl;
return 0;
}
char *posisiKar(char str[], char kar) {
char *ptr = str;
do {
if (*ptr == kar)
break;
ptr++;
} while (*ptr != '0');
return ptr;
}