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
✗ Incorrect
In C++, adding an ampersand (&) after the type declares a reference parameter.
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
✗ Incorrect
Passing by reference lets the function change the original variable directly.
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
✗ Incorrect
Literals cannot be passed to non-const reference parameters because they are not variables.
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
✗ Incorrect
The ampersand (&) means num 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
✗ Incorrect
Const references avoid copying large objects and prevent the function from changing the argument.
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
Step 1: Understand passing by reference
Passing by reference means the function receives the actual variable's address, not a copy.
Step 2: Effect on the original variable
Since the function works with the original variable, any changes inside the function affect it directly.
Final Answer:
Modify the original variable passed to the function -> Option D
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
Step 1: Identify reference syntax in C++
To pass by reference, use & after the type in the parameter list.
Step 2: Match syntax to options
int &num uses int &num, which is the correct way to pass by reference.
Final Answer:
int &num -> Option A
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
Step 1: Understand function behavior
The function addOne takes x by reference and increments it by 1.
Step 2: Trace the variable a
Initially, a is 5. After calling addOne(a), a becomes 6.
Final Answer:
6 -> Option C
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
Step 1: Check function parameter syntax
The function swap correctly uses references int &a and int &b.
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.
Final Answer:
No error, code works correctly -> Option B
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
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.
Step 2: Trace the loop and doubling effect
Loop runs 3 times, doubling each element: 1->2, 2->4, 3->6.
Final Answer:
2 4 6 -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.