Danu Andrean, 05 Jan 2025
Pointer Dan Reference C++

C++ adalah salah satu bahasa pemrograman yang memberikan fleksibilitas tinggi kepada pengembang, salah satunya melalui fitur pointer dan reference. Namun, konsep ini seringkali membingungkan pemula. Artikel ini akan menjelaskan secara rinci tentang pointer dan reference, serta kapan dan bagaimana menggunakannya.
Apa itu Pointer?
Pointer(penunjuk) adalah variabel yang menyimpan alamat memori dari variabel lain. Pointer memungkinkan kita untuk mengakses dan memodifikasi nilai di memori secara langsung.
Deklarasi Pointer:
#include <iostream>
int main()
{
int x = 10;
int* ptr = &x; // Pointer ptr menyimpan alamat memori dari x
std::cout << *ptr; // Output: 10
}
Penjelasan:
- int* ptr mendeklarasikan pointer ptr yang menunjuk ke tipe data int.
- &x mengambil alamat memori dari variabel x.
Ilustrasi Memori:

pada ilustrasi diatas bisa dilihat jika value dari variable ptr mengambil dari alamat memory di variable x, sehingga jika kita melakukan inisialisai dengan pointer( * ) maka value akan berubah menjadi alamat memory sesuai dengan contoh berikut:
#include <iostream>
int main()
{
int x = 10;
int *ptr = &x;
std::cout << ptr; // Output: 0x100
}
dan jika kita memberi pointer( * ) di variable ptr maka hasilnya adalah value x yaitu 10, hal ini sama saja dengan pointer( * ) digunakan untuk menunjuk ke alamat memory x dengan value 10.
jika kita melakukan perubahan terhadap ptr maka hasil x juga akan berubah, karena ptr mempunyai relasi memory yang sama dengan x.
#include <iostream>
int main()
{
int x = 10;
int *ptr = &x;
*ptr = 20;
std::cout << x; // Output: 20
}
Multiple Pointer
Multiple pointer digunakan untuk mengelola hierarki atau struktur data yang lebih kompleks, seperti array dua dimensi, daftar berantai (linked list), pohon biner, atau grafik. Pointer yang menunjuk ke pointer lain memungkinkan Anda mengelola hubungan antara data dengan lebih dinamis dan fleksibel.
#include <iostream>
int main()
{
int x = 10;
int *ptr1 = &x;
int **ptr2 = &ptr1;
std::cout<< *(*ptr2) << std::endl; // output 10
return 0;
}
Ilustrasi Memori:

Apa Itu Reference?
Reference adalah alias untuk variabel lain. Reference tidak menyimpan alamat memori seperti pointer, tetapi berfungsi sebagai nama kedua untuk variabel yang sama.
Deklarasi Reference:
#include <iostream>
int main()
{
int x = 10;
int& ref = x; // Reference ref adalah alias untuk y
std::cout << ref; // Output: 10
}
Penjelasan:
- int& ref mendeklarasikan reference ref yang mengacu pada variabel x.
Ilustrasi Memori:

bisa dilihat bahwa varibale ref hanya menjadi alias dan tidak membuat memory baru.
Function
reference dapat digunakan dalam fungsi untuk menghindari salinan data yang bisa membuat performa program lebih efisien.
#include <iostream>
void Increment(int& num) {
num += 1;
}
int main()
{
int value = 5;
Increment(value);
std::cout << value; // Output: 6
}
Kesimpulan
Pointer dan reference memiliki kelebihan masing-masing:
- Gunakan pointer ketika Anda perlu bekerja dengan memori secara langsung atau mengelola alokasi memori dinamis.
- Gunakan reference untuk membuat kode lebih bersih dan menghindari salinan data yang tidak perlu.
Dengan memahami kedua konsep ini, Anda dapat mengoptimalkan penggunaan memori dan meningkatkan efisiensi program Anda.