📖 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
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.
Step 2: Apply to the given pointer
Since p is an int*, p + 1 points to the next int in memory.
Final Answer:
Moves the pointer to the next element of the type it points to -> Option D
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
Step 1: Review pointer arithmetic syntax
Valid pointer arithmetic uses p + n or p - n where n is an integer.
Step 2: Check each option
p + 2 is valid syntax. Options A, C, and D contain invalid operators or spacing causing syntax errors.
Final Answer:
p + 2 -> Option A
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
Step 1: Understand pointer and array relation
Pointer p points to arr[0], which is 10.
Step 2: Calculate pointer offset
*(p + 2) accesses the element 2 positions after arr[0], which is arr[2] = 30.
Final Answer:
30 -> Option C
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
Step 1: Analyze pointer assignment
p = arr + 3 points to one element past the last valid element (index 3 in a 3-element array).
Step 2: Understand dereferencing invalid pointer
Dereferencing *p here causes undefined behavior because it accesses memory outside the array.