Bird
Raised Fist0
Compiler Designknowledge~20 mins

Parameter passing mechanisms in Compiler Design - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Parameter Passing Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Call-by-Value

Which statement best describes the call-by-value parameter passing mechanism?

AThe function receives a copy of the argument's value; changes inside the function do not affect the original variable.
BThe function receives the memory address of the argument; changes inside the function affect the original variable.
CThe function receives a reference to the argument; changes inside the function affect the original variable only if explicitly returned.
DThe function receives a copy of the argument's value and a reference to the original variable simultaneously.
Attempts:
2 left
💡 Hint

Think about whether changes inside the function affect the original variable.

📋 Factual
intermediate
2:00remaining
Identifying Call-by-Reference Behavior

In which parameter passing mechanism does the called function directly modify the caller's variable?

ACall-by-reference
BCall-by-name
CCall-by-constant
DCall-by-value
Attempts:
2 left
💡 Hint

Consider which method allows the function to change the original variable.

🔍 Analysis
advanced
2:00remaining
Comparing Call-by-Name and Call-by-Value

Consider the following code snippet in a language supporting call-by-name:

function f(x) { return x + x; }
f(3 + 4)

What is the difference in evaluation between call-by-name and call-by-value for the argument 3 + 4?

ABoth evaluate <code>3 + 4</code> once before the call.
BCall-by-value evaluates <code>3 + 4</code> twice; call-by-name evaluates it once before the call.
CCall-by-value evaluates <code>3 + 4</code> once before the call; call-by-name evaluates <code>3 + 4</code> twice inside the function.
DBoth evaluate <code>3 + 4</code> twice inside the function.
Attempts:
2 left
💡 Hint

Think about when the argument expression is evaluated in each mechanism.

❓ Reasoning
advanced
2:00remaining
Effect of Call-by-Result on Variable Values

In the call-by-result parameter passing mechanism, what happens to the variable passed as an argument after the function finishes execution?

AThe variable remains unchanged regardless of the function's operations.
BThe variable is updated with the final value computed inside the function.
CThe variable is updated before the function starts execution and remains fixed during the function.
DThe variable is updated only if the function explicitly returns it.
Attempts:
2 left
💡 Hint

Consider when the variable's value is copied back to the caller.

❓ Comparison
expert
2:00remaining
Distinguishing Call-by-Value-Result from Call-by-Reference

Which of the following statements correctly distinguishes call-by-value-result (copy-in copy-out) from call-by-reference?

ACall-by-value-result and call-by-reference are identical in behavior and timing of updates.
BCall-by-value-result passes the address of the variable; call-by-reference passes a copy of the value.
CCall-by-value-result evaluates the argument expression multiple times; call-by-reference evaluates it once.
DCall-by-value-result copies the argument value in and out, so changes inside the function do not affect the caller until the function ends; call-by-reference allows immediate changes to the caller's variable.
Attempts:
2 left
💡 Hint

Think about when the caller's variable is updated in each mechanism.

Practice

(1/5)
1. Which parameter passing mechanism sends a copy of the argument to the function, so changes inside the function do not affect the original variable?
easy
A. Pass by name
B. Pass by reference
C. Pass by value
D. Pass by result

Solution

  1. Step 1: Understand pass by value

    Pass by value means the function receives a copy of the argument, so any changes inside the function do not affect the original variable.
  2. Step 2: Compare with other mechanisms

    Pass by reference sends the original variable, so changes affect it. Pass by name and result behave differently and are less common.
  3. Final Answer:

    Pass by value -> Option C
  4. Quick Check:

    Copy sent, original unchanged = Pass by value [OK]
Hint: Copy means pass by value, original means pass by reference [OK]
Common Mistakes:
  • Confusing pass by value with pass by reference
  • Thinking pass by name sends a copy
  • Assuming pass by result is the same as pass by value
2. Which of the following is the correct syntax to declare a function parameter passed by reference in C++?
easy
A. void func(int &x);
B. void func(int x);
C. void func(ref int x);
D. void func(*int x);

Solution

  1. Step 1: Recall C++ reference syntax

    In C++, passing by reference uses the ampersand (&) symbol after the type in the parameter list.
  2. Step 2: Analyze options

    void func(int &x); uses int &x which is correct. void func(int x); passes by value, C is invalid syntax, and D is pointer syntax, not reference.
  3. Final Answer:

    void func(int &x); -> Option A
  4. Quick Check:

    C++ reference uses & in parameter [OK]
Hint: Look for & symbol in parameter for C++ reference [OK]
Common Mistakes:
  • Confusing pointer (*) with reference (&)
  • Using invalid 'ref' keyword in C++
  • Assuming no symbol means pass by reference
3. Consider the following pseudocode using pass by reference:
function increment(x) {
  x = x + 1
}

var a = 5
increment(a)
print(a)

What will be the output?
medium
A. 5
B. Undefined
C. Error
D. 6

Solution

  1. Step 1: Understand pass by reference effect

    Since x is passed by reference, the function changes the original variable a by adding 1.
  2. Step 2: Trace the code execution

    a starts at 5, increment adds 1 making it 6, then print outputs 6.
  3. Final Answer:

    6 -> Option D
  4. Quick Check:

    Pass by reference changes original = 6 [OK]
Hint: Pass by reference changes original variable [OK]
Common Mistakes:
  • Assuming pass by reference behaves like pass by value
  • Thinking the original variable remains unchanged
  • Ignoring the effect of increment inside the function
4. Identify the error in this code snippet using pass by value:
function swap(x, y) {
  temp = x
  x = y
  y = temp
}

var a = 3
var b = 4
swap(a, b)
print(a, b)
medium
A. Print statement is incorrect
B. swap function does not swap original variables
C. Variables a and b are not declared
D. Syntax error in function definition

Solution

  1. Step 1: Understand pass by value behavior in swap

    Since parameters are passed by value, swap changes only local copies x and y, not original a and b.
  2. Step 2: Check the output effect

    After swap call, a and b remain 3 and 4, so swap does not work as intended.
  3. Final Answer:

    swap function does not swap original variables -> Option B
  4. Quick Check:

    Pass by value means original unchanged [OK]
Hint: Pass by value swaps local copies only [OK]
Common Mistakes:
  • Assuming swap changes original variables with pass by value
  • Looking for syntax errors where none exist
  • Ignoring parameter passing mechanism effect
5. You want to write a function that modifies a list of numbers by doubling each element. Which parameter passing mechanism is best to use to ensure the original list is changed efficiently?
hard
A. Pass by reference
B. Pass by value
C. Pass by name
D. Pass by result

Solution

  1. Step 1: Consider efficiency and effect on original list

    Pass by value copies the entire list, which is inefficient and changes won't affect original.
  2. Step 2: Choose mechanism that modifies original efficiently

    Pass by reference sends the original list, allowing direct modification without copying.
  3. Final Answer:

    Pass by reference -> Option A
  4. Quick Check:

    Modify original efficiently = Pass by reference [OK]
Hint: Modify original data efficiently with pass by reference [OK]
Common Mistakes:
  • Choosing pass by value and expecting original change
  • Confusing pass by name with pass by reference
  • Ignoring efficiency of copying large data
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