Lompati ke konten utama
Modul 5 · Pelajaran 2 dari 212/18 dalam kursus~15 min
Pelajaran modul (2/2)

Petunjuk

Pointer adalah salah satu fitur paling kuat dan khas dari C++. Mereka memungkinkan Anda mengakses memori fisik komputer secara langsung, memungkinkan pengelolaan sumber daya yang efisien dan kinerja tinggi.


1. Apa itu Memori dan Alamat?

Setiap variabel yang Anda deklarasikan dalam program Anda disimpan dalam sel memori RAM. Setiap sel memiliki alamat memori unik (biasanya dinyatakan dalam format heksadesimal, misalnya, 0x7ffee3bf87ac).

C++ memungkinkan kita mendapatkan alamat memori variabel apa pun menggunakan operator alamat &:

C++
int x = 42;
std::cout << &x; // Prints the memory address of x (e.g., 0x7ffee3bf87ac)

2. Pengertian Pointer

Pointer adalah variabel khusus yang menyimpan alamat memori variabel lain sebagai nilainya.

Sintaksnya memerlukan penggunaan tanda bintang * setelah tipe data:

C++
int x = 42;
int* ptr = &x; // ptr is a pointer to an integer that contains the address of x

3. Operator Dereferensi (*)

Untuk mengakses atau mengubah nilai yang disimpan pada alamat yang ditunjuk oleh penunjuk, kita menggunakan operator dereferensi (atau operator tipuan), yang juga diwakili oleh simbol *:

C++
int x = 42;
int* ptr = &x;

std::cout << *ptr; // Prints 42 (the value ptr points to)

*ptr = 100; // Modifies the value of x through the pointer
std::cout << x;    // Now prints 100!

4. Petunjuk Null: nullptr

Sebuah pointer yang tidak menunjuk ke alamat yang valid harus diinisialisasi dengan kata kunci nullptr (diperkenalkan di C++11):

C++
int* ptr = nullptr; // Safe null pointer

Cobalah sendiri

Latihan#cpp.m5.l2.e1
Upaya: 0Memuat…

Pada main, terdapat nilai variabel integer yang diinisialisasi menjadi 42. Deklarasikan pointer ke integer ptr yang menunjuk ke alamat nilai. Gunakan dereferensi ptr untuk mengatur nilai nilai menjadi 100, dan terakhir cetak nilai menggunakan std::cout.

Memuat editor…
Tunjukkan petunjuk

Deklarasikan pointer dengan `int* ptr = &value;`, ubah nilainya dengan mendereferensi `*ptr = 100;`, dan cetak `std::cout << value;`.

Solusi tersedia setelah 3 upaya

Latihan#cpp.m5.l2.e2
Upaya: 0Memuat…

Definisikan fungsi doubleValue yang menerima pointer ke bilangan bulat (int* ptr) dan mengalikan nilai yang ditunjuknya dengan 2 (jika pointer bukan nol). Secara utama, panggil doubleValue dengan meneruskan alamat variabel num dan mencetaknya.

Memuat editor…
Tunjukkan petunjuk

Fungsi tersebut harus menerima `int* ptr`. Di dalamnya, gunakan `*ptr = (_ptr) _ 2`. Di main panggil dengan `doubleValue(&num);`.

Solusi tersedia setelah 3 upaya

Quiz#cpp.m5.l2.q1
Siap

Mengingat kode yang diberikan, ekspresi manakah yang memungkinkan Anda mengubah nilai a secara langsung, menyetelnya ke 10?

C++
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?
Pilihan jawaban