Cambo Freelance
HomeServicesArticlesTutorialsTeamCoursesContact
Cambo Freelance

Professional freelance team from Cambodia delivering technology-driven solutions with cultural insight and modern expertise.

Send us a message

Ready to start your project? Get in touch with our team.

Contact Us

Services

  • Web & Mobile Development Services
  • Graphic Design & Branding Services

Useful Links

  • Home
  • Services
  • Learning
  • About Us
  • Contact
  • Pricing

© 2026 Cambo Freelance. រក្សាសិទ្ធិទាំងអស់។

TelegramFacebookLinkedInEmail
HomeTutorialsC++C++ Pointers
⚡C++ Tutorials

50 lessons

Beginner(21)1C++ Introduction2C++ Getting Started3C++ Syntax4C++ Output5C++ Comments6C++ Variables7C++ Data Types8C++ Constants9C++ User Input10C++ Operators11C++ Strings12C++ Math13C++ Booleans14C++ Conditions15C++ Switch16C++ Loops17C++ Break and Continue18C++ Arrays19C++ Functions20C++ References21C++ Pointers
Intermediate(19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers
Advanced(10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44
⚡

C++ Tutorials

Lesson 21 of 50

All lessons
Beginner (21)1C++ Introduction2C++ Getting Started
26
C++ Encapsulation
27C++ Inheritance
28C++ Polymorphism
29C++ Abstraction
30C++ Files
31C++ Exception Handling
32C++ Namespaces
33C++ Structures
34C++ Enumerations
35C++ STL Introduction
36C++ Vectors
37C++ Maps
38C++ Sets
39C++ Queues
40C++ Stacks
C++ Move Semantics
45C++ Multithreading
46C++ Design Patterns
47C++ Memory Management
48C++17 Features
49C++20 Features
50C++ Performance Optimization
3
C++ Syntax
4C++ Output
5C++ Comments
6C++ Variables
7C++ Data Types
8C++ Constants
9C++ User Input
10C++ Operators
11C++ Strings
12C++ Math
13C++ Booleans
14C++ Conditions
15C++ Switch
16C++ Loops
17C++ Break and Continue
18C++ Arrays
19C++ Functions
20C++ References
21C++ Pointers
Intermediate (19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers26C++ Encapsulation27C++ Inheritance28C++ Polymorphism29C++ Abstraction30C++ Files31C++ Exception Handling32C++ Namespaces33C++ Structures34C++ Enumerations35C++ STL Introduction36C++ Vectors37C++ Maps38C++ Sets39C++ Queues40C++ Stacks
Advanced (10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44C++ Move Semantics45C++ Multithreading46C++ Design Patterns47C++ Memory Management48C++17 Features49C++20 Features50C++ Performance Optimization
⚡C++BeginnerLesson 21 of 50CamboFreelanceJune 19, 2026

C++ Pointers

Understand C++ pointers: memory addresses, pointer declaration, dereferencing, pointer arithmetic, and safe null pointer usage.


Tutorials › C++ › Pointers
Beginner10 min readLesson 21 of 50

In This Lesson

  • Memory Addresses
  • Pointer Variables
  • Dereferencing
  • Null Pointers
  • Quiz

Memory Addresses

Every variable is stored at a memory address. Use the address-of operator & to get it:

#include <iostream>
using namespace std;

int main() {
    int x = 42;
    cout << "Value:   " << x  << endl;
    cout << "Address: " << &x << endl;
    return 0;
}

Output (addresses vary):

Value:   42
Address: 0x7ffee4b2a8bc

Pointer Variables

A pointer stores a memory address. Declare with type*:

int  x = 42;
int* ptr = &x;    // ptr holds the address of x

cout << ptr;      // prints address (same as &x)
cout << *ptr;     // prints 42 (value AT the address)

Dereferencing

Use * to access the value at the address a pointer holds:

int x = 10;
int* ptr = &x;

*ptr = 99;          // change x through the pointer
cout << x;          // 99
#include <iostream>
using namespace std;

int main() {
    double price = 29.99;
    double* p = &price;

    cout << "Price: $" << *p  << endl;   // 29.99
    *p = 19.99;
    cout << "Sale:  $" << price << endl;  // 19.99
    return 0;
}

Null Pointers

A pointer that points to nothing should be set to nullptr (C++11):

int* p = nullptr;   // safe — not pointing to garbage

if (p == nullptr) {
    cout << "Pointer is null" << endl;
}
Warning: Dereferencing a null or uninitialized pointer causes undefined behavior (usually a crash). Always initialize pointers.

Exercise

Create an integer variable, a pointer to it, and use the pointer to double the value. Print the result using both the original variable and the pointer.

Show Solution
#include <iostream>
using namespace std;

int main() {
    int num = 15;
    int* ptr = &num;

    *ptr = *ptr * 2;

    cout << "Via variable: " << num  << endl;   // 30
    cout << "Via pointer:  " << *ptr << endl;   // 30
    return 0;
}

Quiz

  1. What does the & operator do when applied to a variable?

    • A) Performs bitwise AND
    • B) Declares a reference
    • C) Returns the memory address of the variable
    • D) Dereferences a pointer
    Answer

    C) &x returns the memory address of variable x.

  2. What does *ptr mean when ptr is a pointer?

    • A) Multiply by ptr
    • B) Declare a pointer
    • C) Access the value at the address ptr holds
    • D) Get the address of ptr
    Answer

    C) *ptr is the dereference operator — it gives the value stored at the address ptr points to.

Summary

  • &variable returns the memory address of a variable.
  • type* ptr declares a pointer that stores an address.
  • *ptr dereferences — accesses the value at the stored address.
  • Always initialize pointers; use nullptr for "no address".
← Previous: References Next: C++ Classes →
c++pointersmemorybeginner
PreviousLesson 20: C++ ReferencesNextLesson 22: C++ Classes
Back to All Tutorials