Bird
Raised Fist0
C++programming~10 mins

Address and dereference operators in C++ - Interactive Code Practice

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

Complete the code to get the address of variable num.

C++
int num = 10;
int* ptr = [1]num;
Drag options to blanks, or click blank then click option'
A&
B*
C#
D%
Attempts:
3 left
💡 Hint
Common Mistakes
Using the dereference operator * instead of the address-of operator &.
Using symbols like # or % which are not related to pointers.
2fill in blank
medium

Complete the code to access the value pointed to by ptr.

C++
int num = 20;
int* ptr = #
int value = [1]ptr;
Drag options to blanks, or click blank then click option'
A&
B%
C*
D->
Attempts:
3 left
💡 Hint
Common Mistakes
Using the address-of operator & instead of dereference operator *.
Using the arrow operator -> which is for pointers to structs or classes.
3fill in blank
hard

Fix the error in the code to correctly assign the value 50 to the variable pointed to by ptr.

C++
int num = 0;
int* ptr = #
[1]ptr = 50;
Drag options to blanks, or click blank then click option'
A*ptr
B&ptr
Cptr
Dptr*
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning directly to the pointer variable instead of the value it points to.
Using incorrect syntax like ptr* or &ptr.
4fill in blank
hard

Fill both blanks to create a pointer ptr that points to num and then access its value.

C++
int num = 100;
int* ptr = [1]num;
int val = [2]ptr;
Drag options to blanks, or click blank then click option'
A&
B*
C->
D%
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping the operators in the blanks.
Using the arrow operator -> which is not for simple pointers.
5fill in blank
hard

Fill all three blanks to declare an integer num, a pointer ptr to num, and assign the value 75 to num using the pointer.

C++
int [1];
int* [2] = &[3];
*ptr = 75;
Drag options to blanks, or click blank then click option'
Anum
Bptr
Dval
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for the variable and pointer inconsistently.
Not using the address-of operator & in the pointer initialization.

Practice

(1/5)
1. What does the & operator do in C++?
easy
A. It dereferences a pointer to get the value.
B. It multiplies two numbers.
C. It declares a pointer variable.
D. It gives the memory address of a variable.

Solution

  1. Step 1: Understand the & operator

    The & operator is used to get the address of a variable in memory.
  2. Step 2: Differentiate from other operators

    It does not multiply, declare pointers, or dereference pointers; those are different operations.
  3. Final Answer:

    It gives the memory address of a variable. -> Option D
  4. Quick Check:

    & operator = address retrieval [OK]
Hint: Remember & means 'address of' in C++ [OK]
Common Mistakes:
  • Confusing & with multiplication operator
  • Thinking & declares a pointer
  • Mixing & with dereference * operator
2. Which of the following is the correct way to declare a pointer to an integer in C++?
easy
A. int *ptr;
B. int &ptr;
C. int ptr*;
D. *int ptr;

Solution

  1. Step 1: Recall pointer declaration syntax

    In C++, a pointer to an int is declared as int *ptr; where * indicates pointer type.
  2. Step 2: Check other options for syntax errors

    int &ptr; declares a reference, not a pointer. int ptr*; and *int ptr; are invalid syntax.
  3. Final Answer:

    int *ptr; -> Option A
  4. Quick Check:

    Pointer declaration = int *ptr; [OK]
Hint: Pointer syntax: type *name; [OK]
Common Mistakes:
  • Using & instead of * for pointers
  • Placing * after variable name incorrectly
  • Confusing pointers with references
3. What is the output of the following code?
int x = 10;
int *p = &x;
*p = 20;
std::cout << x << std::endl;
medium
A. Address of x
B. 10
C. 20
D. Compilation error

Solution

  1. Step 1: Understand pointer assignment

    Pointer p stores the address of x. Using *p = 20; changes the value at that address.
  2. Step 2: Check the effect on x

    Since *p points to x, changing *p to 20 updates x to 20.
  3. Final Answer:

    20 -> Option C
  4. Quick Check:

    Dereferencing pointer changes original variable [OK]
Hint: Changing *p changes the value of x [OK]
Common Mistakes:
  • Thinking *p is the address, not the value
  • Expecting output to be original x (10)
  • Confusing pointer variable with pointed value
4. Identify the error in this code snippet:
int x = 5;
int *p;
*p = x;
std::cout << *p << std::endl;
medium
A. Variable x is not declared.
B. Pointer p is not initialized before dereferencing.
C. Syntax error in pointer declaration.
D. Cannot assign value to *p.

Solution

  1. Step 1: Check pointer initialization

    Pointer p is declared but not assigned an address before *p = x;.
  2. Step 2: Understand dereferencing uninitialized pointer

    Dereferencing p without initialization causes undefined behavior or crash.
  3. Final Answer:

    Pointer p is not initialized before dereferencing. -> Option B
  4. Quick Check:

    Always initialize pointers before dereferencing [OK]
Hint: Initialize pointers before using *p [OK]
Common Mistakes:
  • Dereferencing pointer without assigning address
  • Assuming pointer auto-points to variable
  • Confusing pointer declaration with initialization
5. Given the code below, what will be the output?
int a = 3, b = 4;
int *p = &a;
int *q = &b;
int *temp = p;
p = q;
q = temp;
std::cout << *p << " " << *q << std::endl;
hard
A. 4 3
B. 3 4
C. 3 3
D. 4 4

Solution

  1. Step 1: Understand pointer swapping

    Initially, p points to a (3), q points to b (4). The code swaps the pointers using temp.
  2. Step 2: Check final pointer values

    After swapping, p points to b (4), and q points to a (3).
  3. Final Answer:

    4 3 -> Option A
  4. Quick Check:

    Pointer swap changes what they point to [OK]
Hint: Swapping pointers swaps the values they point to [OK]
Common Mistakes:
  • Confusing swapping pointers with swapping values
  • Expecting original order after swap
  • Mixing pointer values and pointed values
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