Pointer Basics
  • What is this course about?
  • How to use this course
  • Course Notes and FAQ
  • Source Code Archive
  • What is a pointer?
  • Pointer variables
  • Indirection
  • Pointer Basics
  • Study Notes – Step One
Addresses and Indirection
  • What is the relationship between a pointer and an array (or string)?
  • How to display pointer values
  • Arrays, addresses and pointers
  • Multiple indirection
  • Multiple indirection with integers
  • Multiple Indirection with strings
  • Indirection and commandline args
  • Generic Pointers
  • Allocating memory
  • Malloc and sizeof
  • Functions that cause errors or warnings
  • calloc
  • free
  • realloc
  • Pointer arithmetic
  • Calculating an array index
  • Pointers to structs
  • Data type alignment
  • Type alignment on boundaries
  • Type alignment and pointer arithmetic
  • Debugging C Programs
  • Debugging Multiple Indirection
  • Addresses and Indirection
  • Study Notes – Step Two
Lists and data structures
  • Arrays and Lists
  • What is a linked list?
  • Singly linked lists
  • To free or not to free?
  • Doubly linked lists
  • Programming a doubly-linked List
  • Initializing a doubly-linked list
  • Implementing a doubly linked list
  • What is a queue?
  • Queues
  • What is a stack?
  • Stacks
  • Pushing and popping
  • Calculating the length of list
  • Copying a list
  • Removing an element from within a list
  • Adding an element into a list
  • Function pointers
  • Function pointer declarations
  • An array of function pointers
  • Lists and Data Structures
  • Study Notes – Step Three
Common Pointer Problems
  • Why do pointers cause problems?
  • Deep and shallow copies
  • A deeper look at deep and shallow copies
  • Incorrect memory allocation
  • Casting pointers
  • Incorrect casts
  • Freeing already freed memory
  • Memory leaks
  • Using freed memory
  • Pointers out of scope
  • Dereferencing a null pointer
  • Common pointer problems
  • Study Notes – Step Four
  • And finally...