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