pointer - E-learning Amikom

advertisement
STRUKTUR DATA
POINTER
Ld.Farida
Intro
STRUKTUR DATA
 Variabel adalah sebuah pengenal (identifier) yang digunakan
untuk mewakili suatu nilai di dalam sebuah program
 Pendeklarasian variabel menyebabkan pengalokasian
memori di C++
 Ukuran memori untuk setiap variabel berbeda tergantung tipe
data
 Setiap pendeklarasian variabel memiliki dua atribut, yaitu
address dan value
Ilustrasi Variabel
Deklarasi Variabel
741
STRUKTUR DATA
742
743
744
745
746
747
748
749
750
743
744
745
746
747
748
749
750
743
744
745
746
747
748
749
750
x
int x
741
742
3 bit
x
150
X = 150
741
742
Ilustrasi Variabel (con’t)
STRUKTUR DATA
Jika ada deklarasi variabel baru:
int y = 50
741
x
y
150
50
742
743
744
3 bit
cout<< y;
cout<< &y;
50
744745746
745
3 bit
746
747
748
749
750
Pointer
STRUKTUR DATA
Pointer (variabel penunjuk) adalah
suatu variabel yang berisi alamat
memori dari suatu variabel lain
Variabel pointer harus dideklarasikan
dan ditentukan tipe datanya
Jika variabel a berisi alamat dari variabel
b, maka variabel a dikatakan menunjuk
ke variabel b
Deklarasi Pointer
STRUKTUR DATA
tipeData *namaPointer;
 tipeData: berupa sembarang tipe data (seperti
pendeklarasian variabel bukan pointer)
 namaPointer: nama variabel pointer yang digunakan untuk
menunjuk ke data yang memiliki tipe data
 Contoh : char *Nama
Contoh
int *pt
int *pt
STRUKTUR DATA
741
741
x
y
150
50
742
743
744
745
3 bit
3 bit
x
y
150
50
742
743
744
3 bit
745
pt
746
747
749
pt
746
747
748
750
int
749
750
Berisi alamat
variabel yang
ditunjuk
3 bit
Inisialisasi pointer:
y
x
pt
150
pt = &y
748
int
741
742
3 bit
50
743
744
745
3 bit
744745746
746
747
748
749
750
Operator Pointer
STRUKTUR DATA
Operator & (ampersand)
• Menghasilkan alamat dari operand nya, atau alamat
memori yang ditempati oleh variabel
• Operator & yang diletakkan di depan variabel menunjukkan
alamat sebuah variabel disimpan
Operator * (asterik)
• Menghasilkan nilai yang berada pada sebuah alamat
• Pointer dapat melihat nilai yang tersimpan secara langsung
dengan memberikan awalan *
(con’t)
STRUKTUR DATA
 Misal: x bernilai 20 dan ditelakkan pada alamat 987,
kemudian dituliskan instruksi sebagai berikut:
 x = 20;
 y = x;
 z= &x;
 Maka hasilnya adalah:
x
20
986
987
988
&
y
z
20
987
(con’t)
 Misal:
STRUKTUR DATA
a = *b;
Maka, b berisi alamat memori, dan variabel a akan berisi data yang
tersimpan di alamat memori a
 Bila terdapat listing seperti berikut:
a= *z;
Maka, a akan bernilai sama seperti yang ditunjuk oleh z
karena z berada di alamat 987, dan nilai yang berada di alamat
987 adalah 20, maka a =20.
z
987
986
987
20
988
(memory)
a
20
contoh
#include <iostream.h>
#include <conio.h>
main() {
int x,*y;
char *judul="PENGGUNAAN POINTER";
y=&x;
x=5;
cout<<judul<<endl;
cout<<"Nilai x = "<<x;//5
cout<<"\nAlamat memori x = "<<&x;
cout<<"\n\nNilai y = "<<*y;//5
cout<<"\nAlamat memori y = "<<*y;//5
getch();
}
STRUKTUR DATA
Operasi Penugasan
STRUKTUR DATA
 Suatu variable pointer seperti halnya variable yang lain, juga bisa
mengalami operasi penugasan. Nilai dari suatu variable pointer
dapat disalin ke variable pointer yang lain
– Operator (&) dalam kaitannya dengan pointer adalah operator yang
mengembalikan alamat memori dari operandnya.
– Contohnya :
int y = 5; //deklarasi variabel y
int *yPtr; //deklarasi variabel pointer yPtr
yPtr = &y; //mengisi variabel pointer yPtr dengan alamat dari variabel y
STRUKTUR DATA
 Maka representasi dari operasi penugasan di atas adalah :
 Kita asumsikan bahwa variabel y berada pada alokasi
memori 600000 dan variabel pointer yPtr berada pada
alokasi memori 500000.
STRUKTUR DATA
STRUKTUR DATA
Penjelasan
 Output dari contoh diatas menunjukkan bahwa pointer y
berisi alamat x, dimana nilai y = alamat x.
 Jika kita ingin mengetahui data yang tersimpan pada alamat
memori tersebut (alamat x), maka bisa ditambahkan seperti
berikut :
cout << "\nnilai y: " << *y;
Coba tebak outputnya
STRUKTUR DATA
#include <iostream>
using namespace std;
int main(){
int *pu;
float nu;
int u = 158;
pu=&u;
nu=&pu;
cout<<endl;
cout<<"nilai dari u "<<u<<endl;
cout<<"isi pu adalah "<<pu<<endl;
cout<<"isi u adalah "<<u<<endl;
cout<<"nilai yang ditunjuk oleh pu= "<<pu<<endl;
cout<<"nilai nu "<<nu<<endl;
getch();
}
STRUKTUR DATA
Terimakasih

Download