Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Reference types behavior in Blockchain / Solidity - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a reference type variable in Solidity.

Blockchain / Solidity
string memory [1] = "hello";
Drag options to blanks, or click blank then click option'
Agreeting
Baddress
Cbool
Duint
Attempts:
3 left
💡 Hint
Common Mistakes
Using a type name instead of a variable name.
Using a value instead of a variable name.
2fill in blank
medium

Complete the code to assign a reference type variable to another in Solidity.

Blockchain / Solidity
string memory name1 = "Alice";
string memory [1] = name1;
Drag options to blanks, or click blank then click option'
Aname2
Bbool
Caddress
Duint
Attempts:
3 left
💡 Hint
Common Mistakes
Using a type name instead of a variable name.
Using the same variable name twice.
3fill in blank
hard

Fix the error in the function parameter declaration for a reference type in Solidity.

Blockchain / Solidity
function setName(string [1] newName) public {
    name = newName;
}
Drag options to blanks, or click blank then click option'
Aaddress
Buint
Cstorage
Dmemory
Attempts:
3 left
💡 Hint
Common Mistakes
Using storage instead of memory for function parameters.
Omitting the data location keyword.
4fill in blank
hard

Fill both blanks to correctly declare and assign a dynamic array reference type in Solidity.

Blockchain / Solidity
uint[] [1];
[2] = new uint[](5);
Drag options to blanks, or click blank then click option'
Anumbers
Caddress
Dbool
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for declaration and assignment.
Using invalid types for the array variable.
5fill in blank
hard

Fill all three blanks to create a mapping from address to a dynamic array of uint in Solidity.

Blockchain / Solidity
mapping([1] => [2]) public [3];
Drag options to blanks, or click blank then click option'
Aaddress
Buint[]
Cbalances
Dstring
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect types for mapping keys or values.
Using an invalid variable name for the mapping.

Practice

(1/5)
1. In blockchain programming, what happens when you assign one reference type variable to another?
easy
A. The variables become independent and unrelated.
B. A new copy of the data is created.
C. The original data is deleted.
D. Both variables point to the same data location.

Solution

  1. Step 1: Understand reference assignment

    Assigning one reference type variable to another makes both point to the same data location in memory.
  2. Step 2: Effect of changes through references

    Changes made through either variable affect the same original data because they share the reference.
  3. Final Answer:

    Both variables point to the same data location. -> Option D
  4. Quick Check:

    Reference assignment shares data location = A [OK]
Hint: Reference types share data location, not copy data [OK]
Common Mistakes:
  • Thinking assignment copies data
  • Assuming variables become independent
  • Believing original data is deleted
2. Which of the following is the correct syntax to copy a reference type variable in Solidity (blockchain language)?
easy
A. uint[] memory newArray = oldArray;
B. uint[] newArray = oldArray.copy();
C. uint[] storage newArray = oldArray;
D. uint[] newArray = copy(oldArray);

Solution

  1. Step 1: Understand storage vs memory in Solidity

    Storage variables hold data permanently on blockchain, memory variables are temporary copies.
  2. Step 2: Correct way to copy reference

    Assigning a storage reference variable to another storage variable copies the reference, not the data.
  3. Final Answer:

    uint[] storage newArray = oldArray; -> Option C
  4. Quick Check:

    Storage assignment copies reference = B [OK]
Hint: Use 'storage' keyword to copy reference, not 'memory' [OK]
Common Mistakes:
  • Using 'memory' copies data, not reference
  • Assuming .copy() method exists
  • Trying to use undefined copy functions
3. Consider this Solidity code snippet:
uint[] storage arr1 = someArray;
uint[] storage arr2 = arr1;
arr2.push(10);
uint length = arr1.length;

What is the value of length after execution?
medium
A. Length is unchanged from original someArray length.
B. Length increases by 1 due to push on arr2.
C. Length decreases by 1 due to push on arr2.
D. Code causes a compilation error.

Solution

  1. Step 1: Understand reference assignment

    arr2 is assigned as a storage reference to arr1, so both point to the same array.
  2. Step 2: Effect of push on arr2

    Pushing 10 to arr2 modifies the shared array, increasing its length by 1.
  3. Final Answer:

    Length increases by 1 due to push on arr2. -> Option B
  4. Quick Check:

    Shared reference means push affects both = C [OK]
Hint: Changes via one reference affect all references [OK]
Common Mistakes:
  • Thinking arr1 length stays same
  • Assuming arr2 is a copy
  • Ignoring reference sharing behavior
4. Identify the error in this Solidity code snippet:
function updateArray(uint[] memory arr) public {
uint[] storage ref = arr;
ref.push(5);
}
medium
A. Cannot assign memory array to storage reference directly.
B. Cannot push to a storage array.
C. Function must be declared view.
D. No error; code runs fine.

Solution

  1. Step 1: Check assignment between memory and storage

    In Solidity, you cannot assign a memory array directly to a storage reference variable.
  2. Step 2: Understand push operation

    Push is allowed on storage arrays, but assignment error occurs before push.
  3. Final Answer:

    Cannot assign memory array to storage reference directly. -> Option A
  4. Quick Check:

    Memory to storage assignment invalid = A [OK]
Hint: Memory and storage types cannot be assigned directly [OK]
Common Mistakes:
  • Assuming memory can be assigned to storage
  • Thinking push is disallowed on storage
  • Ignoring data location mismatch
5. You want to create a function in Solidity that returns a modified copy of a storage array without changing the original. Which approach correctly uses reference types to achieve this?
hard
A. Create a new memory array, copy elements from storage, modify it, then return.
B. Assign storage array to a storage reference, modify it, then return.
C. Return the storage array directly after modifying it.
D. Use a global variable to store the modified array.

Solution

  1. Step 1: Understand data locations for copying

    To avoid changing original storage array, create a new memory array and copy elements.
  2. Step 2: Modify and return the memory array

    Modify the memory array safely and return it without affecting storage data.
  3. Final Answer:

    Create a new memory array, copy elements from storage, modify it, then return. -> Option A
  4. Quick Check:

    Use memory copy to avoid changing storage = D [OK]
Hint: Copy to memory, modify, then return to keep original safe [OK]
Common Mistakes:
  • Modifying storage reference directly
  • Returning storage array after modification
  • Using global variables unnecessarily
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