Bird
Raised Fist0
Cprogramming~10 mins

Address and dereference operators - 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 address operators.
2fill in blank
medium

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

C
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 accessing members of a struct pointer.
3fill in blank
hard

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

C
int num = 10;
int *ptr = #
[1]ptr = 20;
Drag options to blanks, or click blank then click option'
Aptr*
Bptr
C*
D&ptr
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 p that points to var and then access its value.

C
int var = 5;
int [1] p = [2]var;
int val = *p;
Drag options to blanks, or click blank then click option'
A*
B&
Cint
Dptr
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the asterisk in pointer declaration.
Assigning the pointer directly to the variable instead of its address.
5fill in blank
hard

Fill all three blanks to declare a pointer ptr, assign it the address of num, and then change the value of num to 100 using the pointer.

C
int num = 50;
[1] ptr = [2]num;
[3]ptr = 100;
Drag options to blanks, or click blank then click option'
Aint *
B&
C*
Dint
Attempts:
3 left
💡 Hint
Common Mistakes
Missing the asterisk in pointer declaration.
Assigning pointer directly to variable instead of its address.
Trying to assign value to pointer variable instead of dereferenced pointer.

Practice

(1/5)
1. What does the & operator do in C?
easy
A. It gives the memory address of a variable.
B. It multiplies two numbers.
C. It dereferences a pointer to get the value.
D. It declares a pointer 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, dereference, or declare pointers; those are different operations.
  3. Final Answer:

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

    & means address-of [OK]
Hint: Remember & means 'address of' variable [OK]
Common Mistakes:
  • Confusing & with multiplication operator
  • Thinking & dereferences a pointer
  • Mixing & with pointer declaration
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; is invalid in C (it's C++ reference), int ptr*; and *int ptr; are incorrect syntax.
  3. Final Answer:

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

    Pointer declaration uses * before variable name [OK]
Hint: Pointer declaration: type *name; [OK]
Common Mistakes:
  • Using & instead of * for pointers
  • Placing * after variable name incorrectly
  • Confusing C++ references with pointers
3. What is the output of this code?
int x = 10;
int *p = &x;
printf("%d", *p);
medium
A. 10
B. The memory address of x
C. Garbage value
D. Compilation error

Solution

  1. Step 1: Understand pointer assignment

    Pointer p stores the address of x using &x.
  2. Step 2: Dereference pointer to get value

    *p accesses the value at the address stored in p, which is 10.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    *p gives value at address [OK]
Hint: *p gives value stored at pointer address [OK]
Common Mistakes:
  • Printing pointer variable instead of dereferenced value
  • Confusing & and * operators
  • Expecting address instead of value
4. Identify the error in this code snippet:
int x = 5;
int *p;
*p = x;
printf("%d", *p);
medium
A. Incorrect use of & operator.
B. Pointer p is not initialized before dereferencing.
C. Variable x is not declared.
D. Missing semicolon after declaration.

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 assign pointer before dereferencing [OK]
Hint: Initialize pointer before using * to access value [OK]
Common Mistakes:
  • Dereferencing uninitialized pointer
  • Confusing assignment with address-of
  • Ignoring pointer initialization warnings
5. Given the code below, what will be the output?
int a = 3, b = 7;
int *p = &a;
*p = *p + 4;
p = &b;
*p = *p - 2;
printf("%d %d", a, b);
hard
A. 7 3
B. 3 5
C. 7 5
D. 7 7

Solution

  1. Step 1: Modify value pointed by p initially

    p points to a. *p = *p + 4; changes a from 3 to 7.
  2. Step 2: Change pointer to point to b and modify

    p = &b; points to b. *p = *p - 2; changes b from 7 to 5.
  3. Step 3: Print final values

    a is 7 and b is 5.
  4. Final Answer:

    7 5 -> Option C
  5. Quick Check:

    Pointer changes values via dereference [OK]
Hint: Track pointer target and value changes stepwise [OK]
Common Mistakes:
  • Not updating the correct variable via pointer
  • Confusing pointer assignment with value assignment
  • Ignoring pointer reassignment effects
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