Bird
Raised Fist0
C++programming~20 mins

Reference vs pointer in C++ - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Reference vs Pointer Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of reference and pointer modification
What is the output of this C++ code?
C++
#include <iostream>

int main() {
    int x = 10;
    int &ref = x;
    int *ptr = &x;
    ref = 20;
    *ptr = 30;
    std::cout << x << std::endl;
    return 0;
}
A10
B20
CCompilation error
D30
Attempts:
2 left
💡 Hint
Remember that both reference and pointer can modify the original variable.
❓ Predict Output
intermediate
2:00remaining
Pointer vs reference reassignment
What is the output of this C++ code?
C++
#include <iostream>

int main() {
    int a = 5, b = 10;
    int *ptr = &a;
    int &ref = a;
    ptr = &b;
    ref = b;
    std::cout << a << " " << b << std::endl;
    return 0;
}
A10 10
B5 5
C5 10
DCompilation error
Attempts:
2 left
💡 Hint
Remember that references cannot be reseated but pointers can.
🔧 Debug
advanced
2:00remaining
Identify the error in pointer and reference usage
Which option will cause a compilation error in this code snippet?
C++
int x = 5;
int &ref = x;
int *ptr = &x;

// Options below show different assignments:
Aptr = &ref;
Bint &newRef = ptr;
Cref = 10;
D*ptr = 20;
Attempts:
2 left
💡 Hint
Check if the types on both sides match for references.
🧠 Conceptual
advanced
2:00remaining
Difference in memory behavior of references and pointers
Which statement correctly describes the difference between references and pointers in C++?
APointers can be reseated to point to different objects, references cannot be reseated after initialization.
BReferences require explicit dereferencing to access the value, pointers do not.
CReferences can be null, pointers cannot.
DPointers are automatically dereferenced when used, references require the * operator.
Attempts:
2 left
💡 Hint
Think about whether you can change what a reference or pointer points to after creation.
❓ Predict Output
expert
3:00remaining
Output of complex pointer and reference manipulation
What is the output of this C++ code?
C++
#include <iostream>

void func(int *&ptrRef, int &ref) {
    *ptrRef = ref + 5;
    ref = *ptrRef + 5;
    ptrRef = &ref;
}

int main() {
    int a = 1, b = 2;
    int *p = &a;
    func(p, b);
    std::cout << a << " " << b << " " << *p << std::endl;
    return 0;
}
A1 2 1
B7 7 7
C7 12 12
DCompilation error
Attempts:
2 left
💡 Hint
Track carefully how the pointer reference and reference parameters modify values and pointers.

Practice

(1/5)
1. Which of the following statements correctly describes a reference in C++?
easy
A. A reference is an alias for another variable and cannot be changed to refer to another variable.
B. A reference holds the memory address of a variable and can be reassigned.
C. A reference can be null and does not need to be initialized.
D. A reference is a pointer that requires explicit dereferencing.

Solution

  1. Step 1: Understand what a reference is

    A reference acts as another name for an existing variable and must be initialized when declared.
  2. Step 2: Compare with pointers

    Unlike pointers, references cannot be changed to refer to another variable or be null.
  3. Final Answer:

    A reference is an alias for another variable and cannot be changed to refer to another variable. -> Option A
  4. Quick Check:

    Reference = alias, fixed binding [OK]
Hint: References alias variables and never change target [OK]
Common Mistakes:
  • Thinking references can be null
  • Confusing references with pointers
  • Assuming references can be reassigned
2. Which of the following is the correct syntax to declare a pointer to an integer in C++?
easy
A. int ptr;
B. int *ptr;
C. int &ptr;
D. int ptr*&;

Solution

  1. Step 1: Recall pointer declaration syntax

    In C++, a pointer to an int is declared using an asterisk (*) before the variable name.
  2. Step 2: Analyze options

    int *ptr; uses "int *ptr;" which correctly declares a pointer to int. int ptr; declares an int variable, B declares a reference, and D is invalid syntax.
  3. Final Answer:

    int *ptr; -> Option B
  4. Quick Check:

    Pointer syntax = int *ptr [OK]
Hint: Pointer declaration uses * before variable name [OK]
Common Mistakes:
  • Omitting the * for pointer declaration
  • Using & which declares a reference
  • Combining * and & incorrectly
3. What will be the output of the following C++ code?
int x = 10;
int &ref = x;
int *ptr = &x;
ref = 20;
*ptr = 30;
std::cout << x << std::endl;
medium
A. 30
B. 20
C. 10
D. Compilation error

Solution

  1. Step 1: Trace reference assignment

    ref is a reference to x, so ref = 20 sets x to 20.
  2. Step 2: Trace pointer assignment

    ptr points to x, so *ptr = 30 sets x to 30.
  3. Final Answer:

    30 -> Option A
  4. Quick Check:

    Reference and pointer both modify x = 30 [OK]
Hint: Both ref and *ptr change x directly [OK]
Common Mistakes:
  • Thinking ref and ptr are independent variables
  • Confusing pointer dereference syntax
  • Assuming ref can be reassigned
4. Identify the error in the following code snippet:
int a = 5;
int &ref;
ref = a;
std::cout << ref << std::endl;
medium
A. Cannot assign a variable to a reference.
B. Missing * for pointer declaration.
C. Reference must be initialized when declared.
D. Reference cannot be used with std::cout.

Solution

  1. Step 1: Check reference declaration rules

    References must be initialized at the time of declaration; they cannot be declared without initialization.
  2. Step 2: Analyze the code

    int &ref; is invalid because ref is not initialized. Assigning ref = a; later is not initialization but assignment.
  3. Final Answer:

    Reference must be initialized when declared. -> Option C
  4. Quick Check:

    Reference declaration requires immediate initialization [OK]
Hint: References need initialization on declaration [OK]
Common Mistakes:
  • Thinking references can be declared then assigned
  • Confusing assignment with initialization
  • Assuming pointers and references behave the same
5. Given the following code, what will be the output?
int x = 5;
int y = 10;
int *ptr = &x;
int &ref = y;
ptr = &y;
ref = *ptr + 5;
std::cout << x << ", " << y << std::endl;
hard
A. Compilation error
B. 5, 10
C. 5, 20
D. 5, 15

Solution

  1. Step 1: Trace pointer reassignment

    ptr initially points to x, then is reassigned to point to y.
  2. Step 2: Trace reference and assignment

    ref is a reference to y. The statement ref = *ptr + 5 means y = y + 5 (since ptr points to y).
  3. Step 3: Final values

    x remains 5, y becomes 10 + 5 = 15.
  4. Final Answer:

    5, 15 -> Option D
  5. Quick Check:

    Pointer changes target; reference updates y = 15 [OK]
Hint: Pointer can change target; reference fixed to y [OK]
Common Mistakes:
  • Assuming reference ref points to x
  • Forgetting pointer reassignment
  • Confusing reference assignment with pointer assignment
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