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


Interview Relevance

These exercises are relevant for:


🔗

C Pointer Practice

This code contains pointer, memory, and data structure concepts using practical C examples.

View Code →