Bird
Raised Fist0
Cprogramming~15 mins

Address and dereference operators - Mini Project: Build & Apply

Choose your learning style10 modes available
Address and Dereference Operators in C
📖 Scenario: You are working with a simple program that stores a number and uses pointers to access and modify it. This is like having a remote control (pointer) to change the TV (variable) without touching it directly.
🎯 Goal: Learn how to use the & operator to get the address of a variable and the * operator to access or change the value at that address.
📋 What You'll Learn
Create an integer variable named number with the value 10.
Create a pointer variable named ptr that stores the address of number.
Use the pointer ptr to change the value of number to 20.
Print the value of number after modification.
💡 Why This Matters
🌍 Real World
Pointers let programs work with memory directly, which is important for efficient software like games, operating systems, and device drivers.
💼 Career
Understanding pointers is essential for C programming jobs, embedded systems development, and performance-critical applications.
Progress0 / 4 steps
1
Create an integer variable
Create an integer variable called number and set it to 10.
C
Hint

Use int number = 10; to create the variable.

2
Create a pointer to the variable
Create a pointer variable called ptr that stores the address of number using the & operator.
C
Hint

Use int *ptr = &number; to create the pointer.

3
Change the value using the pointer
Use the pointer ptr and the dereference operator * to change the value of number to 20.
C
Hint

Use *ptr = 20; to change the value at the address.

4
Print the modified value
Print the value of number using printf to show it has changed to 20.
C
Hint

Use printf("%d\n", number); to print the value.

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