Skip to content

Latest commit

 

History

History

03_pointer_reference

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

CPP Pointer

Address dan Pointer adalah fitur ekslusif bahasa pemrograman C dan C++. Address dan pointer memiliki tiga fungsi utama, yaitu melokasikan objek baru, melemparkan/mengoper fungsi ke fungsi yang lainnya, dan melakukan perulangan atau loop elemen yang terdapat dalam array atau data struktur lain.

References:

Address

Apa itu address? Dalam bahasa Inggris, address berarti alamat atau lokasi. Kali ini, kita akan mengambil lokasi dari sebuah variable dalam C++. Setiap variable pasti memiliki sebuah address di mana address itu adalah letak variable tersebut di dalam memori.

Cara menampilkan address

std::string benda = "kursi"; // "kursi"
std::cout << &benda; // output: 0x7ffe137a25f0 (value ini merupakan address untuk variable benda)

Operator & merupakan kunci yang akan mengembalikan address dari sebuah variable, perlu diingat bahwa address ini akan terus berganti.

Reference: Tentang address

Pointer

Apa itu pointer dalam C++? Pointer merupakan variable khusus untuk menyimpan address sebagai value-nya.

Cara mendeklarasikan Pointer

std::string benda = "kursi";
std::string* ptr = &benda; // ptr = 0x7ffe137a25f0
std::cout << ptr; // 0x7ffe137a25f0

Untuk pointer, operator * merupakan kunci untuk mendeklarasikan sebuah variable bertipe pointer. Sama seperti variable yang lainnya, nama variable dari pointer ini tidak boleh sama.

Null Pointer

std::string* ptr = nullptr; // ptr = 0x0

Null pointer merupakan metode untuk mengosongkan address dari sebuah variable pointer atau tidak beralamat.

Mengambil value melalui pointer (dereferencing)

std::string benda = "kursi";
std::string* ptr = &benda; // ptr = 0x7ffe137a25f0
std::cout << *ptr; // "kursi"

Untuk mengambil value dengan address, kita harus mendeklarasikan operator * sebelum memanggil pointer.

Pointer to Pointer

std::string benda;
std::string* ptr;
sdt::string** pptr;

benda = "kursi"

ptr = &benda; // ptr menyimpan address benda

pptr = &ptr; // pptr menyimpan address yang sama dengan ptr

std::cout << "Value yang terdapat dalam benda: " << benda << std::endl;
std::cout << "Value yang terdapat dalam *ptr: " << *ptr << std::endl;
std::cout << "Value yang terdapat dalam **ptr: " << **ptr << std::endl;
Output:
Value yang terdapat dalam benda: kursi
Value yang terdapat dalam *ptr: kursi
Value yang terdapat dalam **ptr: kursi

Metode Pointer to Pointer ini mengharuskan kita untuk menambah * lagi seperti **ptr, Pointer to Pointer merupakan metode untuk mengakses address dari sebuah pointer sehingga membentuk seperti sebuah rantai pointer.

References:

Contoh penggunaan: Mengganti nilai variable

#include <iostream>
int main(){
    // deklarasikan angka yang akan diakses oleh pointer dan variable dari angka yang akan diganti
    int num = 20;
    int val;

    // deklarasikan pointer dan simpan address num ke dalamnya
    int* ptr;
    ptr = &num;

    // ganti nilai val dengan nilai num menggunakan ptr
    val = *ptr;
    std::cout << "Nilai dari val adalah " << val; // Output: Nilai dari val adalah 20
}

topik lanjutan pada pointer bisa dilihat disini