π§ 1. Pengertian Pointer
7
π Definisi
Pointer adalah variabel yang menyimpan alamat memori dari variabel lain.
π§ Narasi Konseptual
Bayangkan pointer seperti alamat rumah:
- Variabel = rumah
- Pointer = alamat rumah
β‘οΈ Dengan mengetahui alamatnya, kita bisa langsung menuju lokasi data tanpa harus mencarinya.
π 2. Konsep Dasar Pointer
π Istilah Penting
| Istilah | Penjelasan |
|---|---|
| Address | Lokasi memori |
| Value | Nilai yang disimpan |
| Dereference | Mengakses nilai melalui pointer |
| Reference | Mengambil alamat variabel |
π» Contoh (C++)
int x = 10;
int *p = &x;cout << x; // nilai
cout << &x; // alamat
cout << p; // alamat x
cout << *p; // nilai x
π§ Narasi
&xβ alamat x*pβ isi dari alamat yang ditunjuk pointer
π§± 3. Representasi Pointer di Memori
7
π§ Penjelasan
- Variabel disimpan di memori dengan alamat tertentu
- Pointer menyimpan alamat tersebut
- Dereference memungkinkan akses langsung ke nilai
π 4. Operasi Pointer
π Tabel Operasi
| Operasi | Deskripsi |
|---|---|
| Reference (&) | Mengambil alamat |
| Dereference (*) | Mengakses nilai |
| Assignment | Menyimpan alamat |
| Pointer Arithmetic | Operasi matematika pada pointer |
π» Contoh Pointer Arithmetic
int arr[3] = {10, 20, 30};
int *p = arr;cout << *p; // 10
cout << *(p+1); // 20
π§ Narasi
Pointer bisa berpindah antar elemen array karena memori bersifat berurutan.
π§© 5. Pointer dan Array
6
π Konsep
Nama array adalah pointer ke elemen pertama.
π§ Narasi
arrβ&arr[0]- Pointer mempermudah traversal array
π§ 6. Pointer dan Fungsi
π Konsep
Pointer digunakan untuk:
- Pass by reference
- Menghemat memori
- Memungkinkan perubahan langsung
π» Contoh
void ubah(int *x){
*x = 100;
}int main(){
int a = 10;
ubah(&a);
cout << a; // 100
}
π§ Narasi
Tanpa pointer:
- Nilai tidak berubah
Dengan pointer: - Fungsi dapat mengubah nilai asli
π§± 7. Manajemen Memori (Memory Management)
7
π Definisi
Memory management adalah proses pengelolaan penggunaan memori dalam program.
π 8. Jenis Memori
π Tabel Perbandingan
| Jenis | Karakteristik |
|---|---|
| Stack | Otomatis, cepat, terbatas |
| Heap | Dinamis, fleksibel, lebih lambat |
π§ Narasi
- Stack β untuk variabel lokal
- Heap β untuk data dinamis
βοΈ 9. Dynamic Memory Allocation
π Konsep
Alokasi memori saat runtime menggunakan:
new/delete(C++)malloc/free(C)
π» Contoh
int *p = new int;
*p = 50;delete p;
π§ Narasi
newβ alokasi memorideleteβ membebaskan memori
β‘οΈ Jika tidak dibebaskan β memory leak
β οΈ 10. Masalah dalam Pointer
π Tabel Masalah
| Masalah | Penjelasan |
|---|---|
| Dangling Pointer | Pointer ke memori yang sudah dihapus |
| Memory Leak | Memori tidak dibebaskan |
| Null Pointer | Pointer tidak menunjuk ke alamat valid |
π§ Contoh Dangling Pointer
int *p = new int;
delete p;
*p = 10; // error
π 11. Hubungan Pointer dengan Struktur Data
π§ Narasi
Pointer sangat penting dalam:
- Linked List
- Tree
- Graph
β‘οΈ Karena struktur ini menggunakan referensi antar node
π§ͺ 12. Studi Kasus Nyata
π Kasus: Linked List
Tanpa pointer:
- Tidak bisa menghubungkan node
Dengan pointer:
- Setiap node menyimpan alamat node berikutnya
π» 13. Implementasi Pointer Lengkap
#include <iostream>
using namespace std;int main(){
int a = 10;
int *p = &a; cout << "Nilai a: " << a << endl;
cout << "Alamat a: " << &a << endl;
cout << "Pointer p: " << p << endl;
cout << "Nilai dari pointer: " << *p << endl; return 0;
}
βοΈ 14. Kelebihan dan Kekurangan Pointer
π Tabel
| Kelebihan | Kekurangan |
|---|---|
| Akses memori langsung | Sulit dipahami |
| Efisien | Rentan error |
| Fleksibel | Debugging sulit |
π 15. Ringkasan Materi
- Pointer menyimpan alamat memori
- Digunakan untuk efisiensi dan fleksibilitas
- Memory management penting untuk performa
- Harus hati-hati untuk menghindari error
- Menjadi dasar struktur data dinamis
π 16. Latihan / Diskusi
βοΈ Soal Teori
- Jelaskan konsep pointer
- Apa perbedaan stack dan heap?
- Apa itu memory leak?
π» Soal Praktikum
- Buat program pointer sederhana
- Implementasikan dynamic memory allocation
- Simulasikan pass by reference
π― Penutup
Pointer dan memory management adalah konsep lanjutan yang sangat penting karena:
- Digunakan dalam hampir semua struktur data kompleks
- Meningkatkan efisiensi program
- Menjadi dasar pemrograman tingkat lanjut