Bird
Raised Fist0
C++programming~20 mins

Passing parameters by reference in C++ - Practice Problems & Coding Challenges

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

void addFive(int &num) {
    num += 5;
}

int main() {
    int x = 10;
    addFive(x);
    std::cout << x << std::endl;
    return 0;
}
A10
B15
C5
DCompilation error
Attempts:
2 left
💡 Hint
Remember that passing by reference allows the function to modify the original variable.
❓ Predict Output
intermediate
2:00remaining
Effect of passing pointer vs reference
What will be printed by this program?
C++
#include <iostream>

void increment(int *ptr) {
    (*ptr)++;
}

void incrementRef(int &ref) {
    ref++;
}

int main() {
    int a = 3;
    increment(&a);
    incrementRef(a);
    std::cout << a << std::endl;
    return 0;
}
A3
B4
CCompilation error
D5
Attempts:
2 left
💡 Hint
Both functions increase the value by one.
🔧 Debug
advanced
2:00remaining
Identify the error with passing by reference
What error will this code produce?
C++
#include <iostream>

void setToZero(int &num) {
    num = 0;
}

int main() {
    setToZero(5);
    return 0;
}
ACompilation error: cannot bind non-const lvalue reference to an rvalue
BRuntime error: segmentation fault
CNo error, program runs fine
DOutput: 0
Attempts:
2 left
💡 Hint
You cannot pass a literal to a non-const reference parameter.
❓ Predict Output
advanced
2:00remaining
Reference parameter with const qualifier
What is the output of this program?
C++
#include <iostream>

void printValue(const int &num) {
    // num += 1; // Uncommenting this line causes error
    std::cout << num << std::endl;
}

int main() {
    int x = 7;
    printValue(x);
    return 0;
}
A7
B8
CCompilation error due to modification of const reference
DRuntime error
Attempts:
2 left
💡 Hint
Const reference means the function cannot change the value.
❓ Predict Output
expert
2:00remaining
Reference to pointer parameter behavior
What will be the output of this program?
C++
#include <iostream>

void changePointer(int *&ptr) {
    static int y = 20;
    ptr = &y;
}

int main() {
    int x = 10;
    int *p = &x;
    changePointer(p);
    std::cout << *p << std::endl;
    return 0;
}
ACompilation error
B10
C20
DUndefined behavior
Attempts:
2 left
💡 Hint
The function changes the pointer itself to point to a different variable.

Practice

(1/5)
1.

What does passing a parameter by reference in C++ allow a function to do?

easy
A. Only read the variable without access to its value
B. Create a copy of the variable inside the function
C. Prevent the variable from being changed
D. Modify the original variable passed to the function

Solution

  1. Step 1: Understand passing by reference

    Passing by reference means the function receives the actual variable's address, not a copy.
  2. Step 2: Effect on the original variable

    Since the function works with the original variable, any changes inside the function affect it directly.
  3. Final Answer:

    Modify the original variable passed to the function -> Option D
  4. Quick Check:

    Passing by reference = modify original [OK]
Hint: Reference means function can change original variable [OK]
Common Mistakes:
  • Thinking it creates a copy instead of using original
  • Confusing with passing by value
  • Assuming it prevents changes
2.

Which of the following is the correct syntax to pass an integer num by reference to a function update?

void update(??? num) { num = 10; }
easy
A. int &num
B. int *num
C. int num
D. int &&num

Solution

  1. Step 1: Identify reference syntax in C++

    To pass by reference, use & after the type in the parameter list.
  2. Step 2: Match syntax to options

    int &num uses int &num, which is the correct way to pass by reference.
  3. Final Answer:

    int &num -> Option A
  4. Quick Check:

    Reference parameter uses & after type [OK]
Hint: Use & after type to pass by reference [OK]
Common Mistakes:
  • Using pointer syntax (*) instead of reference (&)
  • Omitting & and passing by value
  • Confusing rvalue reference (&&) with normal reference
3.

What is the output of the following code?

void addOne(int &x) {
    x = x + 1;
}

int main() {
    int a = 5;
    addOne(a);
    std::cout << a << std::endl;
    return 0;
}
medium
A. Compilation error
B. 5
C. 6
D. Undefined behavior

Solution

  1. Step 1: Understand function behavior

    The function addOne takes x by reference and increments it by 1.
  2. Step 2: Trace the variable a

    Initially, a is 5. After calling addOne(a), a becomes 6.
  3. Final Answer:

    6 -> Option C
  4. Quick Check:

    Reference parameter increments original variable [OK]
Hint: Reference changes original variable value [OK]
Common Mistakes:
  • Thinking original variable stays unchanged
  • Confusing reference with pointer syntax
  • Expecting compilation error due to missing &
4.

Identify the error in this code snippet:

void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

int main() {
    int x = 10, y = 20;
    swap(x, y);
    std::cout << x << ", " << y << std::endl;
    return 0;
}
medium
A. Missing & in function parameters
B. No error, code works correctly
C. Incorrect swapping logic
D. Missing return type in main

Solution

  1. Step 1: Check function parameter syntax

    The function swap correctly uses references int &a and int &b.
  2. Step 2: Verify swapping logic and main function

    The swapping logic uses a temporary variable correctly. The main function has proper return type and prints swapped values.
  3. Final Answer:

    No error, code works correctly -> Option B
  4. Quick Check:

    Correct reference swap function = no error [OK]
Hint: Check reference syntax and logic carefully [OK]
Common Mistakes:
  • Assuming swap logic is wrong
  • Confusing pointers with references
  • Thinking main lacks return type
5.

Given this function that doubles the value of an integer passed by reference, what will be the output of the program?

void doubleValue(int &num) {
    num *= 2;
}

int main() {
    int values[] = {1, 2, 3};
    for (int i = 0; i < 3; i++) {
        doubleValue(values[i]);
    }
    for (int v : values) {
        std::cout << v << " ";
    }
    return 0;
}
hard
A. 2 4 6
B. 1 2 3
C. Compilation error due to reference in array
D. 0 0 0

Solution

  1. Step 1: Understand passing array elements by reference

    Each element values[i] is passed by reference to doubleValue, so the original array elements are modified.
  2. Step 2: Trace the loop and doubling effect

    Loop runs 3 times, doubling each element: 1->2, 2->4, 3->6.
  3. Final Answer:

    2 4 6 -> Option A
  4. Quick Check:

    Reference parameter doubles original array elements [OK]
Hint: Array elements passed by reference get changed directly [OK]
Common Mistakes:
  • Thinking array elements are copied, not changed
  • Expecting compilation error with references and arrays
  • Ignoring loop effect on all elements
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