Pointer arithmetic enables direct memory manipulation in C, offering significant advantages for efficient programming. Key applications include:
Dynamic Memory Management
Pointer arithmetic facilitates flexible memory allocation using heap operations:
int* dynamicArray = (int*)calloc(5, sizeof(int));
if (dynamicArray) {
dynamicArray[2] = 42; // Pointer-based array access
printf("Value: %d\n", *(dynamicArray + 2)); // Arithmetic equivalent
free(dynamicArray);
}
Efficient Data Structure Handling
Pointers optimize memory usage and performance:
typedef struct {
int width;
int height;
} Dimensions;
Dimensions screen = {1920, 1080};
Dimensions* dimPtr = &screen;
printf("Resolution: %dx%d\n", dimPtr->width, dimPtr->height);
Functon Paramter Passing
Pointer parameters enable in-place modification:
void modifyValue(int* valPtr, int adjustment) {
*valPtr += adjustment;
}
int main() {
int counter = 10;
modifyValue(&counter, -3);
printf("Adjusted value: %d\n", counter);
return 0;
}
While powerful, pointer arithmetic requires careful management to prevent memory leaks and invalid memory access.