Home/Notes/Pointers
Board Exam Notes

Pointers Notes

Questions

3 questions per semester paper

Difficulty

Medium-Hard

Importance

High yield for University theory and C programming labs

Overview

Pointers are powerful memory address variables that provide direct control over hardware and memory management in C/C++. Mastering pointers is essential for university exams as they form the backbone of dynamic data structures and efficient resource allocation, appearing frequently in both theory and practical coding sections.

Pointer Arithmetic

Pointer arithmetic involves performing addition or subtraction operations on memory addresses rather than the values stored at those addresses. The change in the address depends entirely on the data type the pointer points to, as the compiler increments the address by the size of that type.

  • Increment/Decrement changes address by sizeof(data_type)
  • Subtraction of two pointers gives the number of elements between them
  • Pointers cannot be multiplied or divided
  • Used extensively for array traversal and string manipulation
  • ptr + 1 points to the next memory block of the same type

Pointers to Functions

A function pointer is a variable that stores the memory address of a function, allowing programs to invoke functions dynamically at runtime. This concept is fundamental for implementing callback functions and event-driven programming architectures.

  • Declaration syntax: return_type (*ptr_name)(parameter_types)
  • Enables dynamic selection of functions during execution
  • Passed as arguments to other functions for higher-order logic
  • Essential for building jump tables or switch-case alternatives
  • Dereferencing: (*ptr)(arguments)

Dynamic Memory Allocation

Dynamic memory allocation allows a program to request specific blocks of memory from the heap during runtime rather than at compile time. It is crucial for handling variable-sized data structures like linked lists where the exact memory requirement is unknown beforehand.

  • Key functions: malloc(), calloc(), realloc(), and free()
  • Memory allocated on the heap is not automatically cleared
  • Failure to call free() leads to memory leaks
  • malloc() initializes memory with garbage values
  • calloc() initializes memory blocks to zero

Formula Sheet

Address of variable: ptr = &variable

Value at address: val = *ptr

Size of allocation: ptr = (type*)malloc(n * sizeof(type))

Exam Tip

Always draw a memory map diagram in your answer to visualize how the pointer address shifts relative to the underlying data type; it significantly boosts marks in university evaluations.

Common Mistakes

  • Dangling pointers: accessing memory addresses that have already been freed.
  • Ignoring the pointer type size during arithmetic operations.
  • Forgetting to check the null pointer returned by malloc() after allocation.

More Revision Notes

Ready to test yourself?

Play topic-wise Pointers questions in Aspirant Arcade — gamified MCQ practice.

Download Free