Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Pointer Arithmetic | Pointer Fundamentals
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C Pointers Mastery

bookPointer Arithmetic

Pointer arithmetic allows you to perform operations such as incrementing, decrementing, and finding the difference between pointers. These operations are closely tied to the type of the pointer. When you increment or decrement a pointer, the pointer moves by the size of the type it points to, not just by one byte. For example, incrementing an int * pointer advances it by the size of an int (typically 4 bytes on many systems), while incrementing a char * pointer advances it by 1 byte, since a char is 1 byte. You can also subtract one pointer from another if both point to elements of the same array, and the result is the number of elements between them, not the number of bytes.

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> int main() { int numbers[] = {10, 20, 30, 40, 50}; int *ptr = numbers; printf("First element: %d\n", *ptr); ptr++; // Move to the next element printf("Second element: %d\n", *ptr); ptr += 2; // Move two elements ahead printf("Fourth element: %d\n", *ptr); int diff = ptr - numbers; // How many elements between ptr and start printf("Pointer difference: %d\n", diff); return 0; }

Pointer arithmetic is especially useful when working with arrays. Since array elements are stored in contiguous memory locations, incrementing a pointer allows you to traverse the array efficiently. Accessing *(ptr + i) is equivalent to ptr[i], and both retrieve the value at the ith position from the pointer's current location. The memory layout of the array means that as you increment the pointer, you move from one element to the next according to the type's size. This is why pointer arithmetic is type-aware: moving a pointer by one always advances it to the next element of its type, regardless of the actual byte size.

question mark

What happens when you increment an int * pointer by 1?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

Can you explain why pointer arithmetic is type-aware?

How does pointer arithmetic differ between different data types?

Can you give more examples of pointer arithmetic with arrays?

bookPointer Arithmetic

Veeg om het menu te tonen

Pointer arithmetic allows you to perform operations such as incrementing, decrementing, and finding the difference between pointers. These operations are closely tied to the type of the pointer. When you increment or decrement a pointer, the pointer moves by the size of the type it points to, not just by one byte. For example, incrementing an int * pointer advances it by the size of an int (typically 4 bytes on many systems), while incrementing a char * pointer advances it by 1 byte, since a char is 1 byte. You can also subtract one pointer from another if both point to elements of the same array, and the result is the number of elements between them, not the number of bytes.

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> int main() { int numbers[] = {10, 20, 30, 40, 50}; int *ptr = numbers; printf("First element: %d\n", *ptr); ptr++; // Move to the next element printf("Second element: %d\n", *ptr); ptr += 2; // Move two elements ahead printf("Fourth element: %d\n", *ptr); int diff = ptr - numbers; // How many elements between ptr and start printf("Pointer difference: %d\n", diff); return 0; }

Pointer arithmetic is especially useful when working with arrays. Since array elements are stored in contiguous memory locations, incrementing a pointer allows you to traverse the array efficiently. Accessing *(ptr + i) is equivalent to ptr[i], and both retrieve the value at the ith position from the pointer's current location. The memory layout of the array means that as you increment the pointer, you move from one element to the next according to the type's size. This is why pointer arithmetic is type-aware: moving a pointer by one always advances it to the next element of its type, regardless of the actual byte size.

question mark

What happens when you increment an int * pointer by 1?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3
some-alt