Bird
Raised Fist0
C++programming~30 mins

Common pointer mistakes in C++ - Mini Project: Build & Apply

Choose your learning style10 modes available
Common pointer mistakes
📖 Scenario: Imagine you are learning how to use pointers in C++. Pointers are like addresses that tell you where to find data in memory. But if you use pointers the wrong way, your program can crash or behave strangely. This project will help you understand some common pointer mistakes and how to avoid them.
🎯 Goal: You will create a simple C++ program that uses pointers correctly. You will see how to declare pointers, assign them to variables, and avoid mistakes like using uninitialized pointers or dereferencing null pointers.
📋 What You'll Learn
Create an integer variable and a pointer to it
Create a pointer initialized to nullptr
Assign the pointer to the address of the integer variable
Print the value pointed to by the pointer
💡 Why This Matters
🌍 Real World
Pointers are used in many programs to efficiently access and modify data in memory, such as in system programming, game development, and embedded systems.
💼 Career
Understanding pointers is essential for software developers working with low-level programming, performance optimization, and memory management.
Progress0 / 4 steps
1
Create an integer variable and a pointer
Create an integer variable called number with the value 10. Then create a pointer to an integer called ptr but do not assign it any value yet.
C++
Hint

Remember, to declare a pointer to an int, use int* ptr;.

2
Initialize a pointer to nullptr
Create a pointer to an integer called nullPtr and initialize it to nullptr.
C++
Hint

Use nullptr to indicate the pointer points to nothing.

3
Assign pointer to the address of the variable
Assign the pointer ptr to the address of the variable number using the address-of operator &.
C++
Hint

Use ptr = &number; to make ptr point to number.

4
Print the value pointed to by the pointer
Use std::cout to print the value pointed to by ptr. Use the dereference operator * to get the value.
C++
Hint

Use std::cout << *ptr << std::endl; to print the value.

Practice

(1/5)
1. What happens if you try to dereference a pointer that has not been initialized in C++?
int *p;
int x = *p;
easy
A. It causes undefined behavior and may crash the program.
B. It automatically initializes the pointer to zero.
C. It assigns zero to the variable x.
D. It prints the address stored in p.

Solution

  1. Step 1: Understand pointer initialization

    The pointer p is declared but not initialized, so it points to an unknown memory location.
  2. Step 2: Dereferencing uninitialized pointer

    Dereferencing *p tries to access memory at an undefined address, causing undefined behavior or crash.
  3. Final Answer:

    It causes undefined behavior and may crash the program. -> Option A
  4. Quick Check:

    Uninitialized pointer dereference = crash [OK]
Hint: Never use pointers before initializing them [OK]
Common Mistakes:
  • Assuming uninitialized pointers are null
  • Thinking dereferencing gives zero
  • Ignoring pointer initialization
2. Which of the following is the correct way to initialize a pointer to null in C++?
easy
A. int *p = NULL;
B. int *p = nullptr;
C. int *p = '0';
D. int *p = 0x0;

Solution

  1. Step 1: Understand null pointer initialization

    In modern C++, nullptr is the preferred way to initialize a pointer to null.
  2. Step 2: Check other options

    NULL is old style (macro), 0x0 is a literal but less clear, and '0' is a char, not a pointer.
  3. Final Answer:

    int *p = nullptr; -> Option B
  4. Quick Check:

    Use nullptr for null pointers [OK]
Hint: Use nullptr for null pointers in modern C++ [OK]
Common Mistakes:
  • Using character '0' instead of nullptr
  • Using integer 0 instead of nullptr
  • Confusing NULL macro with nullptr
3. What is the output of the following code?
int x = 10;
int *p = &x;
*p = 20;
std::cout << x << std::endl;
medium
A. 10
B. Address of x
C. Compilation error
D. 20

Solution

  1. Step 1: Understand pointer assignment

    Pointer p stores the address of x. So *p refers to x.
  2. Step 2: Modify value through pointer

    Assigning *p = 20; changes the value of x to 20.
  3. Final Answer:

    20 -> Option D
  4. Quick Check:

    Pointer dereference changes original variable [OK]
Hint: Changing *p changes the original variable [OK]
Common Mistakes:
  • Confusing pointer value with pointed value
  • Expecting original variable unchanged
  • Thinking *p prints address
4. Identify the error in the following code snippet:
int *p = nullptr;
std::cout << *p << std::endl;
medium
A. Missing semicolon after nullptr.
B. Pointer p is not declared.
C. Dereferencing a null pointer causes runtime error.
D. std::cout cannot print pointer values.

Solution

  1. Step 1: Analyze pointer initialization

    Pointer p is initialized to nullptr, meaning it points to nothing.
  2. Step 2: Dereferencing null pointer

    Trying to access *p causes a runtime error (crash) because it points to no valid memory.
  3. Final Answer:

    Dereferencing a null pointer causes runtime error. -> Option C
  4. Quick Check:

    Dereference nullptr = crash [OK]
Hint: Never dereference nullptr or uninitialized pointers [OK]
Common Mistakes:
  • Assuming nullptr can be dereferenced safely
  • Ignoring runtime crash possibility
  • Confusing pointer declaration with usage
5. Given the code below, what is the safest way to avoid a dangling pointer?
int *p = new int(5);
delete p;
// What should be done next?
hard
A. Set p to nullptr after delete.
B. Assign p to a new integer immediately.
C. Do nothing; pointer is automatically safe.
D. Use delete[] p; instead of delete p;.

Solution

  1. Step 1: Understand delete effect

    After delete p;, the pointer p still holds the old address but memory is freed (dangling pointer).
  2. Step 2: Prevent dangling pointer

    Setting p = nullptr; makes it clear pointer is invalid and safe to check before use.
  3. Final Answer:

    Set p to nullptr after delete. -> Option A
  4. Quick Check:

    Nullify pointer after delete to avoid dangling [OK]
Hint: Nullify pointers after delete to avoid dangling [OK]
Common Mistakes:
  • Using delete[] for single object
  • Not setting pointer to nullptr after delete
  • Assuming pointer auto-clears after delete
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard