Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

readme.md

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