C Pointer Practice Pack Documentation
This document explains pointer, memory, and data structure concepts using practical C examples.
C Pointer Practice
This code contains pointer, memory, and data structure concepts using practical C examples.
View Code →Compilation
gcc -O0 -g pointer_practice.c -o pointer_practice
./pointer_practice
Task 1: Pointer Basics
Demonstrates address-of, dereference, and modifying data via pointer.
void update(int *p);
Concepts: - & operator - * dereference - Stack vs heap address
Task 2: Swap Using Pointers
Swaps two integers using pointer indirection.
void swap_int(int *a, int *b);
Concept: Pass-by-address.
Task 3: Array Sum Using Pointers
Traverse array using pointer arithmetic.
int sum_array(int *arr, int n);
Concept: *(arr+i) vs arr[i].
Task 4: Find Max Element
Returns pointer to maximum element.
int* max_ptr(int *arr, int n);
Concept: Returning addresses.
Task 5: Reverse Array
In-place reversal using two pointers.
void reverse_int_array(int *arr, int n);
Concept: Two-pointer technique.
Task 6: Custom strlen
Manual string length calculation.
size_t my_strlen(const char *s);
Concept: Null-terminated strings.
Task 7: Custom strcpy
Copies string including null terminator.
void my_strcpy(char *dst, const char *src);
Concept: Safe copying.
Task 8: Reverse String
In-place string reversal.
void reverse_str(char *s);
Concept: Pointer traversal.
Task 9: Char Array vs Char Pointer
Difference between stack array and string literal.
char arr[] = "hello";
const char *ptr = "hello";
Concept: Mutability and storage.
Task 10: 2D Array with Pointers
Printing matrix using pointer arithmetic.
void print2D(int (*p)[4], int rows);
Concept: Pointer to array.
Task 11: Row Sum
Calculates row-wise sum.
void row_sum(int (*p)[4], int rows, int *out);
Task 12: 3D Array Access
Access 3D array elements using pointers.
int get3D(int (*p)[3][4], int i, int j, int k);
Task 13: Const Pointers
Understanding const with pointers.
const int *p1;
int *const p2;
const int *const p3;
Task 14: Const Correctness
Demonstrates const-safe APIs.
int sum_const(const int *arr, int n);
Task 15: Dynamic Allocation
Heap allocation using malloc/free.
int* create_array(int n);
Concept: Manual memory management.
Task 16: Dynamic 2D Allocation
Contiguous 2D allocation.
int** alloc2D(int rows, int cols);
Freeing:
free(m[0]);
free(m);
Task 18-20: Structures
Using structs and pointers.
struct User;
struct User* create_user(...);
Concepts: - Arrow operator - Heap objects
Task 21: Packet Header Parsing
Parsing binary buffer safely.
int parse_header(const uint8_t *buf, int size, struct Header *out);
Concepts: - Endianness - Buffer validation - Protocol parsing
Key Learnings
- Pointer arithmetic
- Safe memory handling
- String manipulation
- Multi-dimensional arrays
- Struct management
- Buffer parsing
Interview Relevance
These exercises are relevant for:
- Systems programming
- Networking/dataplane
- Embedded C
- Performance engineering
C Pointer Practice
This code contains pointer, memory, and data structure concepts using practical C examples.
View Code →