Bird
Raised Fist0
C++programming~5 mins

Reference vs pointer in C++ - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a reference in C++?
A reference is an alias for another variable. It must be initialized when declared and cannot be changed to refer to another variable later.
Click to reveal answer
beginner
What is a pointer in C++?
A pointer is a variable that stores the memory address of another variable. It can be reassigned to point to different variables.
Click to reveal answer
intermediate
Can a reference be null in C++?
No, a reference must always refer to a valid object. It cannot be null.
Click to reveal answer
intermediate
Can a pointer be null in C++?
Yes, a pointer can hold a null value, meaning it points to no object.
Click to reveal answer
beginner
How do you access the value pointed to by a pointer?
You use the dereference operator (*) to access or modify the value the pointer points to.
Click to reveal answer
Which of the following must be initialized when declared?
AReference
BPointer
CBoth reference and pointer
DNeither
Can a pointer be reassigned to point to a different variable?
ANo, pointers are fixed
BYes, pointers can be reassigned
COnly if the pointer is const
DOnly references can be reassigned
Which can be null in C++?
APointer
BNeither
CBoth
DReference
How do you access the value a pointer points to?
AUsing the & operator
BUsing the -> operator
CUsing the * operator
DUsing the . operator
Which statement about references is true?
AReferences can be reseated to another variable
BReferences store memory addresses
CReferences can be null
DReferences are aliases and cannot be changed after initialization
Explain the main differences between a reference and a pointer in C++.
Think about initialization, nullability, and how you use them.
You got /4 concepts.
    Describe a situation where you would prefer to use a pointer over a reference.
    Consider flexibility and nullability.
    You got /4 concepts.

      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