Dereferencing
This article is quite advanced and assumes you have an understanding of C++. If not, please refer to the C++ section of this book!
The dereference operator (*) is used to access the value at the memory address stored in a pointer.
int someValue = *somePtr;  // Retrieves the value stored at the memory address 
Dereferencing also allows you to modify the value stored at the memory address.
int someVar = 420;
int* somePtr = &someVar;
*somePtr = 69;  // Modifies the value stored at the memory address
When working with pointers to class members, the -> operator is often used for dereferencing.
class SomeClass 
{
public:
    int someData;
};
SomeClass someObj;
SomeClass* ptr = &someObj;
ptr->someData = 69;  // Dereferencing using the -> operator to access class member
Dereferencing is often combined with pointer arithmetic to manipulate arrays, flags, or other blocks of data.
int main() 
{
    int numbers[] = {6, 9, 4, 2, 0 };
    int* ptr = numbers;
    // Print the third element in the array via pointer math
    std::cout << "Value: " << *(ptr + 2); << std::endl;
    return someValue;
}
// Console Output: 
// Value: 4