0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
7 tayangan16 halaman
Dokumen tersebut membahas tentang pointer dalam bahasa C dan C++. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain, yang digunakan untuk mengakses dan mengubah nilai variabel secara tidak langsung. Pointer juga dapat digunakan untuk mengakses elemen-elemen dari suatu array.
Dokumen tersebut membahas tentang pointer dalam bahasa C dan C++. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain, yang digunakan untuk mengakses dan mengubah nilai variabel secara tidak langsung. Pointer juga dapat digunakan untuk mengakses elemen-elemen dari suatu array.
Dokumen tersebut membahas tentang pointer dalam bahasa C dan C++. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain, yang digunakan untuk mengakses dan mengubah nilai variabel secara tidak langsung. Pointer juga dapat digunakan untuk mengakses elemen-elemen dari suatu array.
komputer • Sebelum berbicara mengenai pointer, diperlukan pengetahuan mengenai memori komputer • Apakah fungsi memori komputer? • Bagaimana hubungan program, variabel, dan memori? Memori komputer • RAM (Random access memory) – Istilah untuk memory yang bersifat volatile (isi memori akan hilang jika catu daya dicabut) – RAM bisa dibaca dan ditulisi data secara cepat – Contoh: DDRAM, SDRAM, cache memory • ROM (Read Only Memory) – Bersifat non volatile (data masih eksis di memori walaupun cata daya dicabut) – ROM bisa dibaca secara cepat, tapi untuk menulisi ROM butuh sekuens/urutan tertentu – Contoh: ROM BIOS • Pada mata kuliah ini, memori yang akan dibahas adalah RAM RAM • Fungsi RAM: – Menyimpan instruksi-instruksi hasil kompilasi program – Menyimpan data-data variabel • Ketika suatu program di-compile, beberapa byte memori dari RAM akan dialokasikan untuk menyimpan instruksi dan menyimpan data variabel • Alamat memori yang dialokasikan ditentukan secara otomatis oleh compiler Ilustrasi penggunaan RAM
Alamat memori
0x1000 0x00 Penyimpan variabel a
0x1001 0x02 Penyimpan variabel b 0x1002 0xA2 0x1003 0x33 0x1004 0x12 Penyimpan instruksi 0x1005 0xF0 0x1006 0x01 . . . . 0x2000 0x00 Penyimpan variabel address_a 0x2001 0x10 Reference Operator (&) • Alamat memori tempat suatu variabel disimpan disebut reference dari variabel tersebut • Reference suatu variabel diakses melalui suatu reference operator (&) • Secara bahasa, operator ‘&’ bisa diartikan menjadi ‘alamat dari’ Contoh • Suatu variabel: unsigned char a=0x00; • Variabel a mempunyai 2 parameter : – nilai dari variabel a 0x00 – Alamat memori tempat variabel a disimpan: dibaca dengan perintah &a • Misalnya: menggunakan susunan memori pada ilustrasi slide 5 unsigned char a=0x00; address_a=&a; //variabel address_a akan berisi 0x1000 • Alamat memori ini tidak bisa diprediksi nilainya, karena nilai alamat memori ditentukan oleh compiler • address_a disebut sebagai variabel yang menyimpan reference(alamat memori) untuk variabel a • Variabel address_a bertipe apa?? Pengertian Pointer • Variabel yang menyimpan reference (alamat memori) untuk variabel lain disebut pointer • Dalam C dan C++ pointer adalah suatu tipe data tersendiri • Tipe data pointer digunakan untuk menyimpan alamat memori suatu variabel atau bisa dikatakan ‘menunjuk suatu variabel’ Deklarasi tipe data pointer • Contoh : unsigned int *my_pointer;
• Deklarasi di atas menyatakan deklarasi variabel
my_pointer yang bertipe pointer untuk variabel tipe unsigned int (pointer to unsigned int) • Variable my_pointer digunakan untuk menyimpan suatu alamat memori suatu variabel bertipe unsigned int • Deklarasi suatu pointer diawali dengan tanda ‘*’ sebelum nama variabelnya Dereference operator • Selain untuk deklarasi pointer, tanda ‘*’ juga berfungsi untuk dereference operator • Dereference adalah kebalikan reference • Reference operasi melihat alamat suatu variabel • Dereference operasi untuk melihat isi dari suatu alamat memori • Contoh : a = *my_pointer; • Artinya: my_pointer berisi suatu alamat memori, dan variabel a akan berisi data yg tersimpan di alamat memori tsb. Contoh penggunaan pointer unsigned int a, *pointer_a;
a = 10; //variabel a diisi nilai 10
pointer_a = &a; //pointer_a berisi alamat memori dari a //setelah perintah di atas, nilai *pointer_a akan berisi //sama dengan a cout << “nilai a : “ << a; cout << “nilai *pointer_a” << *pointer_a; Mengubah nilai variabel • Mengubah nilai variabel secara langsung: a = 250;
• Mengubah nilai variabel by-reference
(tidak langsung) unsigned int a,*pointer_a; pointer_a=&a; //variabel pointer_a berisi alamat a *pointer_a=250; //alamat yang ditunjuk pointer_a berisi 250 //dengan kata lain,a akan berisi 250 Array dan pointer • Alamat memori suatu array: – Untuk mengetahui alamat memori suatu array tidak digunakan operator ‘&’. Alamat suatu array ditunjukkan oleh nama array itu sendiri. Misalnya: unsigned char hello[5]=“halo”; alamatnya adalah hello atau &hello[0] yaitu alamat data ke-0 dari suatu array Array dan pointer • Pointer yang menunjuk ke suatu array – Untuk membuat pointer menunjuk ke suatu array yang telah dibuat, variabel pointer diisi dengan alamat array tsb
unsigned char hello[5]=“halo”;
unsigned char *p_hello; p_hello = hello;// atau p_hello=&hello[0] Array dan pointer • Pointer juga bisa digunakan untuk mengakses suatu array sbb: *p_hello adalah sama dengan hello[0] *(p_hello+1) sama dengan hello[1] …. *(p_hello+n) sama dengan hello[n] Array dan pointer • Demikian juga dengan alamat masing elemen-elemen array tsb, bisa diakses lewat pointer sbb: p_hello sama dengan hello atau &hello[0] p_hello+1 sama dengan &hello[1] …. dst