Professional Documents
Culture Documents
Bab 7 Pointer (Penuding)
Bab 7 Pointer (Penuding)
DDC 2133
BAB 7 : PENUDING
PENGENALAN
• Penuding – satu jenis p/ubah yang mengandungi alamat
ingatan bg p/ubah yg lain ( cth : ia menuding kepada
p/ubah yg mengandungi nilai).
• Contoh : jika lokasi ingatan pada alamat 5000 memegang
alamat lokasi ingatan yg lain, katakan 5004, maka nilai yg
disimpan pd lokasi 5004 boleh diakses menggunakan
p/ubah penuding.
Lokasi ingatan Kandungan
5000 5004
5001
5002
5003
5004
5005
PENGENALAN
• Penuding boleh dianggap alamat bg objek yg lain. Jika satu p/ubah
penuding mengandungi alamat satu p/ubah lain, ia sebenarnya penuding
kpd p/ubah tersebut.
• Dlm C++ 2 operator penuding yg diguna :
– Operator reference (&) – alamat kepada (memulangkan alamat p/ubah
selepasnya)
– Operator dereference (*) – nilai yg dituding oleh (memulangkan nilai p/ubah yg
dituding oleh penuding ini)
• Contoh 1 : a = &b
alamat p/ubah b ditetapkan kepada a
• Contoh 2 : c = *b
Nilai yg dituding oleh b ditetapkan kepada c
PENGENALAN
• Contoh 1 : a = &b
alamat p/ubah b ditetapkan kepada a
• Contoh 2 : c = *b
Nilai yg dituding oleh b ditetapkan kepada c
a 1776
b
25
c
25
PENGISYTIHARAN DAN RUJUKAN
• Sintaks pengisytiharan :
jenis_data *namapembolehubah;
• Contoh :
char *markah; //penuding kepada aksara
float *t; //penuding kepada float
double *suhu; //penuding kepada double
• Setelah p/ubah penuding diisytihar, satu ruang yg dpt
memegang /menyimpan satu alamat ingatan
ditempah.
PENGISYTIHARAN DAN RUJUKAN
• Nilai boleh diberi iaitu memberi alamat supaya p/ubah
penuding ini menunjuk ke lokasi p/ubah tertentu.
int *p; i 10
int i = 10;
int p = &i; p
• Lokasi i boleh dirujuk sama ada menggunakan p/ubah i
atau penuding p.
cout <<“Nilai i ialah “<<i;
cout<<“Nilai *p ialah “<<*p; *kedua-dua akan cetak nilai
10
*p = 24;
cout<<“Nilai i yang baru ialah “<<i; *nilai 24 akan dicetak
PENGISYTIHARAN DAN RUJUKAN
#include <iostream.h>
void main ( )
{
int *m, x = 567;
m = &x;
cout << "Nilai x ialah "<<*m
}
Output :
Nilai x ialah 567
UNGKAPAN PENUDING
• Aritmetik Penuding
hanya dibenarkan 2 operasi aritmetik – tambah dan tolak.
contoh 1:
char *mychar;
andaikan p/ubah di atas menuding kpd lokasi ingatan 1000, diberi
mychar++;
maka p/ubah penuding di atas menuding kpd kandungan ingatan pd lokasi
1001.
contoh 2 : jika pointer1 menuding kpd tatasusunan integer
pointer1 = pointer1 + 7;
maka pernyataan di atas akan menyebabkn pointer1 menuding ke
elemen yg ke 7 (dpd yg semasa) dlm tatasusunan.
UNGKAPAN PENUDING
• Perbandingan Penuding
C++ membenarkan perbandingan penuding yg sama jenis.
cth :
int iptr1, iptr2, i1 = 5, i2 = 55;
double dptr1, dptr2, d1 = 7.0, d2 = 77;
iptr1 = &i1;
iptr2 = &i2;
dptr1 = &d1;
dptr2 = &d2;
maka perbandingan (iptr1 == iptr2) adalah sah tetapi
perbandingan (iprt1 == dptr2) tidak sah.
UNGKAPAN PENUDING
• Penetapan nilai Penuding
p/ubah penuding boleh ditetapkan nilai kepada p/ubah
penuding yang lain dari jenis yg sama.
contoh :
#include <iostream.h>
void main ( )
{
int num = 5, *pointer1, *pointer2;
pointer1 = #
pointer2 = pointer1;
cout<<“\n” << *pointer1 <<“\t”<<*pointer2;
Output : 5 5
PENUDING KEPADA PENUDING
• Penuding boleh digunakan utk menuding kpd penuding lain.
• Penuding kpd p/ubah adalah single indirection ttpi
penuding yg menuding kpd penuding yg lain adalah double
@ multiple indirection.
single indirection multiple indirection
pointer variable second pointer first pointer variable
#include <iostream.h>
return 0;
}