Bird
Raised Fist0
C++programming~5 mins

Passing parameters by reference in C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean to pass a parameter by reference in C++?
Passing a parameter by reference means giving the function access to the original variable, not a copy. Changes inside the function affect the original variable.
Click to reveal answer
beginner
How do you declare a function parameter to be passed by reference in C++?
You add an ampersand (&) after the type in the function parameter list. For example: void func(int &x) means x is passed by reference.
Click to reveal answer
beginner
What is the difference between passing by value and passing by reference?
Passing by value sends a copy of the variable, so changes inside the function do not affect the original. Passing by reference sends the actual variable, so changes affect the original.
Click to reveal answer
intermediate
Can you pass a constant reference? Why would you do that?
Yes, by using <code>const Type &</code>. It allows the function to access the original variable without copying it, but prevents the function from changing it. This is efficient and safe.
Click to reveal answer
intermediate
What happens if you try to pass a literal (like 5) to a function expecting a non-const reference parameter?
It causes a compilation error because literals cannot be bound to non-const references. Only variables can be passed by non-const reference.
Click to reveal answer
How do you declare a function parameter to be passed by reference in C++?
AUse the keyword 'ref' before the type
BAdd an ampersand (&) after the type
CAdd an asterisk (*) after the type
DUse the keyword 'pointer' before the type
What is the main advantage of passing parameters by reference?
AIt makes a copy of the variable for safety
BIt prevents the function from accessing the variable
CIt allows the function to modify the original variable
DIt slows down the program
Which of these will cause a compilation error?
APassing a literal to a function expecting a non-const reference parameter
BPassing a variable to a function expecting a reference parameter
CPassing a variable to a function expecting a const reference parameter
DPassing a pointer to a function expecting a reference parameter
What does the following function signature mean? void update(int &num)
Anum is passed by value
Bnum is a constant
Cnum is a pointer
Dnum is passed by reference
Why would you use a const reference parameter?
ATo prevent copying large objects and avoid modification
BTo allow the function to modify the argument
CTo make a copy of the argument
DTo pass a pointer instead
Explain how passing parameters by reference works in C++ and why it might be useful.
Think about how the function can change the original variable.
You got /3 concepts.
    Describe the difference between passing a parameter by value, by reference, and by const reference.
    Consider what the function can do with the parameter and how it affects the original.
    You got /3 concepts.

      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