Bird
Raised Fist0
Cprogramming~30 mins

Pointer arithmetic - Mini Project: Build & Apply

Choose your learning style10 modes available
Pointer Arithmetic in C
📖 Scenario: You are working with a list of numbers stored in an array in C. You want to use pointers to access and manipulate these numbers by moving through the array step-by-step.
🎯 Goal: Learn how to use pointer arithmetic to access elements in an array by moving the pointer to different positions.
📋 What You'll Learn
Create an integer array with specific values
Create a pointer to the start of the array
Use pointer arithmetic to access the third element in the array
Print the value pointed to by the pointer after moving it
💡 Why This Matters
🌍 Real World
Pointer arithmetic is used in low-level programming to efficiently access and manipulate data stored in arrays or buffers.
💼 Career
Understanding pointers and pointer arithmetic is essential for systems programming, embedded development, and performance-critical applications.
Progress0 / 4 steps
1
Create an integer array
Create an integer array called numbers with these exact values: 10, 20, 30, 40, 50.
C
Hint

Use curly braces to list the values inside the array.

2
Create a pointer to the array
Create an integer pointer called ptr and set it to point to the first element of the numbers array.
C
Hint

Set the pointer to the array name, which points to the first element.

3
Use pointer arithmetic to access the third element
Move the pointer ptr two positions forward using pointer arithmetic to point to the third element in the array.
C
Hint

Adding 2 to the pointer moves it two elements ahead.

4
Print the value pointed to by the pointer
Print the value pointed to by ptr using printf. The output should be the third element's value.
C
Hint

Use *ptr to get the value the pointer points to.

Practice

(1/5)
1. What does adding 1 to a pointer in C do?
int *p;
easy
A. Causes a syntax error
B. Moves the pointer by 1 byte
C. Moves the pointer to the previous element
D. Moves the pointer to the next element of the type it points to

Solution

  1. Step 1: Understand pointer arithmetic basics

    In C, adding 1 to a pointer moves it to the next element of the type it points to, not just 1 byte.
  2. Step 2: Apply to the given pointer

    Since p is an int*, p + 1 points to the next int in memory.
  3. Final Answer:

    Moves the pointer to the next element of the type it points to -> Option D
  4. Quick Check:

    Pointer + 1 moves by element size [OK]
Hint: Pointer + 1 moves to next element, not next byte [OK]
Common Mistakes:
  • Thinking pointer arithmetic moves by 1 byte
  • Confusing pointer increment with value increment
  • Assuming pointer addition causes errors
2. Which of the following pointer arithmetic expressions is syntactically correct in C?
int arr[5];
int *p = arr;
easy
A. p + 2
B. p ++ 2
C. p + ++ 2
D. p +* 2

Solution

  1. Step 1: Review pointer arithmetic syntax

    Valid pointer arithmetic uses p + n or p - n where n is an integer.
  2. Step 2: Check each option

    p + 2 is valid syntax. Options A, C, and D contain invalid operators or spacing causing syntax errors.
  3. Final Answer:

    p + 2 -> Option A
  4. Quick Check:

    Correct pointer addition syntax is p + n [OK]
Hint: Pointer arithmetic uses '+' or '-' with integers only [OK]
Common Mistakes:
  • Using invalid operators like '++' incorrectly
  • Adding spaces that change meaning
  • Confusing pointer increment with addition
3. What is the output of this code?
int arr[] = {10, 20, 30, 40};
int *p = arr;
printf("%d", *(p + 2));
medium
A. 10
B. 20
C. 30
D. 40

Solution

  1. Step 1: Understand pointer and array relation

    Pointer p points to arr[0], which is 10.
  2. Step 2: Calculate pointer offset

    *(p + 2) accesses the element 2 positions after arr[0], which is arr[2] = 30.
  3. Final Answer:

    30 -> Option C
  4. Quick Check:

    Pointer + 2 points to third element = 30 [OK]
Hint: *(p + n) accesses nth element after pointer [OK]
Common Mistakes:
  • Confusing index starting at 1 instead of 0
  • Dereferencing pointer without offset
  • Mixing pointer arithmetic with array indexing
4. Identify the error in this code snippet:
int arr[3] = {1, 2, 3};
int *p = arr + 3;
printf("%d", *p);
medium
A. Syntax error in pointer declaration
B. Pointer points beyond array bounds causing undefined behavior
C. Missing semicolon after array initialization
D. Incorrect printf format specifier

Solution

  1. Step 1: Analyze pointer assignment

    p = arr + 3 points to one element past the last valid element (index 3 in a 3-element array).
  2. Step 2: Understand dereferencing invalid pointer

    Dereferencing *p here causes undefined behavior because it accesses memory outside the array.
  3. Final Answer:

    Pointer points beyond array bounds causing undefined behavior -> Option B
  4. Quick Check:

    Pointer must not dereference beyond array end [OK]
Hint: Pointer + array size points just past array, not valid to dereference [OK]
Common Mistakes:
  • Assuming pointer can safely dereference past array end
  • Confusing pointer arithmetic with array length
  • Ignoring undefined behavior risks
5. Given two pointers int *p1 and int *p2 pointing inside the same array, what does p2 - p1 represent?
hard
A. The number of elements between the two pointers
B. The difference in memory addresses as a raw number
C. The number of bytes between the two pointers
D. A syntax error because pointers cannot be subtracted

Solution

  1. Step 1: Understand pointer subtraction in C

    Subtracting two pointers gives the number of elements of the pointer type between them, not bytes.
  2. Step 2: Apply to pointers inside the same array

    Since p1 and p2 point inside the same array, p2 - p1 counts how many elements separate them.
  3. Final Answer:

    The number of elements between the two pointers -> Option A
  4. Quick Check:

    Pointer subtraction = element count difference [OK]
Hint: Pointer subtraction counts elements, not bytes [OK]
Common Mistakes:
  • Thinking subtraction returns byte difference
  • Assuming pointer subtraction is invalid
  • Confusing pointer subtraction with pointer addition
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