Anda di halaman 1dari 32

Chapter II

Ex
POINTER te
nd
ed
Cepi Ramdani S.Kom., M.Eng
Tujuan

Mahasiswa mampu menjelaskan konsep pointer


dan mendemontrasikan kedalam
flowchart/pseudocode/kode program.
1 Recalling about pointer
'n its declaration

content 2 Operasi-operasi pada


pointer

3 Pointer to Pointer
ONE

Recalling
POINTER
Definition

A pointer is a variable that stores the memory address


(as its value) of other variable that have the same data
type and is created using * operator.
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Alamat variabel 0

Berdasarkan ilustrasi disamping, 1


jawablah pertanyaan berikut. 2

1. Tampilkan alamat dari variabel 3


tinggi ? Bagaimana potongan sintak 4 179 xxx tinggi = 179;
programnya ?
...
2. Tampilkan alamat dari variabel ...
luas ? Bagaimana potongan sintak
programnya ? ...
FEE0 3456
3. Tampilkan alamat dari variabel
karnivora ? Bagaimana potongan ... 85.75 xxx luas = 85.75;
sintak programnya ? FFFF FFFD
4. Apa saja tipe data dari ketiga FFFF FFFE
variabel tersebut ? Alasannya ? FFFF FFFF True xxx karnivora = true;
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Isi alamat variabel kedalam 0
pointer
1
Berdasarkan ilustrasi disamping 2
dan keterangannya jawablah 3
pertanyaan berikut.
4 179 xxx tinggi = 179;
float *pointerB; ...
int *pointerA;
...
bool *pointerC;
...
5. Alamat memori dari variabel tinggi, FEE0 3456
luas, dan karnivora adalah ? ... 85.75 xxx luas = 85.75;
6. Bagaimana mengisikan alamat FFFF FFFD
variabel yang sesuai kedalam
FFFF FFFE
pointer A, B, dan C diatas ?
(Potongan sintak programnya) FFFF FFFF True xxx karnivora = true;
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Menampilkan nilai variabel 0
yang dirujuk oleh suatu
pointer 1
2
Berdasarkan ilustrasi disamping
3
dan keterangannya jawablah
pertanyaan berikut. 4 179 xxx tinggi = 179;

...
7. Setelah pointer diisi dengan ...
alamat variabel yang sesuai. Apakah
...
hasil/output dari perintah berikut ?
FEE0 3456
cout<< *pointerB<<endl; ... 85.75 xxx luas = 85.75;
cout<< *pointerA<<endl;
cout<< *pointerC<<endl; FFFF FFFD
FFFF FFFE
FFFF FFFF True xxx karnivora = true;
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Menampilkan nilai variabel 0 FFFF FFFF xxx *pointerX;
yang dirujuk oleh suatu
pointer 1 pointerX = &karnivora;
2
Berdasarkan ilustrasi disamping 3
dan keterangannya jawablah 4 179 xxx tinggi = 179;
pertanyaan berikut.
...

8. Bagaimana potongan sintak ...


program untuk menampilkan isi dari ...
pointerX ?
FEE0 3456
... 85.75 xxx luas = 85.75;
9. Bagaimana potongan sintak
program untuk menampilkan alamat FFFF FFFD
memori dari pointerX ? FFFF FFFE
FFFF FFFF True xxx karnivora = true;
TWO

Operasi-Operasi Pada Pointer


Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Mengubah nilai dari variabel 0
yang ditunjuk oleh pointer
1
Berdasarkan ilustrasi disamping 2 0xFEE0 3455 xxx *pointerX;

dan keterangannya jawablah 3


pertanyaan berikut.
4
...
10. Variabel apa yang ditunjuk oleh
pointerX ? ...
...
11. Apa tipe data dari pointerX ?
FEE0 3456
12. Bagaimana mengubah nilai ... 85.75 xxx luas = 85.75;
variabel yang ditunjuk oleh
FFFF FFFD
pointerX (mengubah dari pointerX) ?
(Potongan sintak program) FFFF FFFE
FFFF FFFF True xxx karnivora = true;
Pointer
Operasi penjumlahan dan
#include <iostream>

pengurangan pada pointer using namespace std;

13. Tulis sintak program disamping pada IDE bool menyala = true;
C++ seperti CodeBlock atau semisalnya, bool *pointer_menyala;
kemudian jalankan dan lakukan analisa. Lalu
berikan kesimpulan. int main()
{
pointer_menyala = &menyala;
cout<<&menyala<<endl;
cout<<pointer_menyala<<endl;
cout<<pointer_menyala + 1<<endl;
cout<<pointer_menyala - 1<<endl;
return 0;
}
Pointer
Operasi penjumlahan dan
#include <iostream>

pengurangan pada pointer using namespace std;

14. Tulis sintak program disamping pada IDE int harga = 150;
C++ seperti CodeBlock atau semisalnya, int *pointer_harga;
kemudian jalankan dan lakukan analisa. Lalu
berikan kesimpulan. int main()
{
pointer_harga = &harga;
cout<<&harga<<endl;
cout<<pointer_harga<<endl;
cout<<pointer_harga + 1<<endl;
cout<<pointer_harga - 1<<endl;
return 0;
}
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Operasi penjumlahan dan 0
pointerX = &lapar;
pengurangan pada pointer
1 0x4 xxx *pointerX;
Berdasarkan ilustrasi disamping 2 cout<<pointerX - 2;
dan keterangannya jawablah 3
pertanyaan berikut.
4 True xxx lapar = true;
5
cout<<pointerX - 2;
6 cout<<pointerX + 2;
Apa hasil/keluaran dari sintak tsb ? ...
FEE0 3456
...
cout<<pointerX + 2;
FFFF FFFD
Apa hasil/keluaran dari sintak tsb ? FFFF FFFE
FFFF FFFF
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Operasi penjumlahan dan 0
pengurangan pada pointer
1
2 0x5 xxx *pointerZ;
pointerZ = &volume;
3
Berdasarkan ilustrasi disamping
dan keterangannya jawablah 4
pertanyaan berikut.
5
6
cout<<pointerZ + 1;
7 173.75 xxx volume = 173.75;

15. Apa hasil/keluaran dari sintak tsb ? 8


9
10
11
12
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
Operasi penjumlahan dan 0
pengurangan pada pointer
1
2 0x9 xxx *pointerZ;
pointerZ = &luas;
3
Berdasarkan ilustrasi disamping
dan keterangannya jawablah 4
pertanyaan berikut.
5
6
cout<<pointerZ - 1;
7
16. Apa hasil/keluaran dari sintak tsb ? 8
9
10
11 193.25 xxx luas = 193.25;

12
Pointer
#include <iostream>

Pointer points to using namespace std;


an Array Variable
bool nilai[5] = {0,1,0,1,1};
17.Tulis sintak program disamping pada
IDE C++ seperti CodeBlock atau int main()
semisalnya, kemudian jalankan dan {
lakukan analisa. Lalu berikan kesimpulan.
cout<<&nilai<<endl;
cout<<&nilai[0]<<" Nilai : "<<nilai[0]<<endl;
cout<<&nilai[1]<<" Nilai : "<<nilai[1]<<endl;
cout<<&nilai[2]<<" Nilai : "<<nilai[2]<<endl;
cout<<&nilai[3]<<" Nilai : "<<nilai[3]<<endl;
cout<<&nilai[4]<<" Nilai : "<<nilai[4]<<endl;

return 0;
}
Pointer
Alamat Ruang Bagaimana ilustrasi
Hexadecimal 0 1 2 3 4 5 6 7 variabel array didalam
memori ?
Pointer points to 0
an Array Variable 1
Indeks Array
0 2 False bool nilai[5] = {0,1,0,1,1};
1 3 True
2 4 False
3 5 True
4 6 True
...
Bagaimana memasukkan alamat
FEE0 3456
memori variabel array kedalam
pointer ? ...
FFFF FFFD bool *pointer_nilai;
FFFF FFFE
FFFF FFFF
Pointer
Alamat Ruang Bagaimana ilustrasi
Hexadecimal 0 1 2 3 4 5 6 7 variabel array didalam
memori ?
Pointer points to 0
an Array Variable 1
Indeks Array
0 2 False bool nilai[5] = {0,1,0,1,1};
1 3 True
2 4 False
3 5 True
4 6 True
...
Bagaimana memasukkan alamat
memori variabel array kedalam FEE0 3456
pointer ? ...

pointer_nilai = nilai; FFFF FFFD 0x2 bool *pointer_nilai;


FFFF FFFE

X
& FFFF FFFF
Pointer
Pointer points to
#include <iostream>

using namespace std;


an Array Variable
bool nilai[5] = {0,1,0,1,1};
Bagaimana menampilkan nilai bool *pointer_nilai;
variabel array yang ditunjuk oleh
pointer ? int main()
{

18. Tulis sintak program disamping pointer_nilai = nilai;


pada IDE C++ seperti CodeBlock cout<<&pointer_nilai[0]<<" Nilai : "<<pointer_nilai[0]<<endl;
atau semisalnya, kemudian jalankan cout<<&pointer_nilai[1]<<" Nilai : "<<pointer_nilai[1]<<endl;
dan lakukan analisa. Lalu berikan cout<<&pointer_nilai[2]<<" Nilai : "<<pointer_nilai[2]<<endl;
kesimpulan. cout<<&pointer_nilai[3]<<" Nilai : "<<pointer_nilai[3]<<endl;
cout<<&pointer_nilai[4]<<" Nilai : "<<pointer_nilai[4]<<endl;

return 0;
}
Pointer
Pointer points to
an Array Variable

Bagaimana mengubah nilai dari variabel


array yang ditunjuk oleh pointer ?
(mengubah melalui pointer)
THREE

POINTER to POINTER
POINTER menunjuk kepada POINTER lain
Pointer
How can it be done ?
#include <iostream>

using namespace std;

bool nilai = true;


bool *pointer_nilaiA;
19. Tulis sintak program disamping bool *pointer_nilaiB;
pada IDE C++ seperti CodeBlock
atau semisalnya, kemudian jalankan int main()
dan lakukan analisa. Lalu berikan {
kesimpulan. pointer_nilaiA = &nilai;
pointer_nilaiB = pointer_nilaiA;

cout<<&nilai<< " Nilai : "<<nilai<<endl;


cout<<pointer_nilaiA<<" Nilai : "<<*pointer_nilaiA<<endl;
cout<<pointer_nilaiB<<" Nilai : "<<*pointer_nilaiB<<endl;

return 0;
}
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
How can it be done ? 0
1 True bool nilai = true;
2
3
4 bool *pointer_nilaiA;
5
Bagaimana mengisi 6 bool *pointer_nilaiB;
pointer dengan pointer ? ...
FEE0 3456
...
FFFF FFFD
FFFF FFFE
FFFF FFFF
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
How can it be done ? 0
1 True bool nilai = true;
2
3
4 0x1 bool *pointer_nilaiA;
5 pointer_nilaiA = &nilai;
Bagaimana mengisi 6 bool *pointer_nilaiB;
pointer dengan pointer ? ...
FEE0 3456
...
FFFF FFFD
FFFF FFFE
FFFF FFFF
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
How can it be done ? 0
1 True bool nilai = true;
2
3
4 0x1 bool *pointer_nilaiA;
5 pointer_nilaiA = &nilai;
Bagaimana mengisi 6 0x1 bool *pointer_nilaiB;
pointer dengan pointer ? ... pointer_nilaiB = pointer_nilaiA;
FEE0 3456
...
FFFF FFFD
FFFF FFFE
FFFF FFFF
Pointer
Alamat Ruang
Hexadecimal 0 1 2 3 4 5 6 7
How can it be done ? 0
1 True bool nilai = true;
2
pointer_nilaiA = &nilai;
3

pointer_nilaiB = pointer_nilaiA; 4 0x1 bool *pointer_nilaiA;


5 pointer_nilaiA = &nilai;
cout<<*pointer_nilaiA<<endl; ? 6 0x1 bool *pointer_nilaiB;
cout<<*pointer_nilaiB<<endl; ? ... pointer_nilaiB = pointer_nilaiA;
FEE0 3456

cout<<pointer_nilaiA<<endl; ? ...
cout<<pointer_nilaiB<<endl; ? FFFF FFFD
FFFF FFFE
FFFF FFFF
#include <iostream>

Pointer
Mengubah nilai variabel yang
using namespace std;
bool nilai = true;
bool *pointer_nilaiA;
ditunjuk pointer bool *pointer_nilaiB;

int main()
{
pointer_nilaiA = &nilai;
20. Tulis sintak program disamping pointer_nilaiB = pointer_nilaiA;
pada IDE C++ seperti CodeBlock
atau semisalnya, kemudian jalankan cout<<&nilai<< " Nilai : "<<nilai<<endl;
dan lakukan analisa. Lalu berikan cout<<pointer_nilaiA<<" Nilai : "<<*pointer_nilaiA<<endl;
kesimpulan. cout<<pointer_nilaiB<<" Nilai : "<<*pointer_nilaiB<<endl;

*pointer_nilaiB = false;
cout<<&nilai<< " Nilai : "<<nilai<<endl;
cout<<pointer_nilaiA<<" Nilai : "<<*pointer_nilaiA<<endl;
cout<<pointer_nilaiB<<" Nilai : "<<*pointer_nilaiB<<endl;
return 0;
}
Materi pointer ini adalah materi dasar yang masih dapat
dikembangkan lebih jauh lagi, jangan malas untuk
melakukan eksplorasi dan eksperimen.
THANKS

Anda mungkin juga menyukai