To be an expert C programmer you need to master the use of pointers. This course explains pointers in real depth. It explains pointer variables, pointer arithmetic, indirection, memory allocation, how to create and maintain linked lists and how to use function pointers. In fact, by the time you finish this course, you will know pointers inside out. You will understand what they are, how they work and how to make sure that they don’t make your programs crash!
This is not a course for beginners. It is aimed at programmers who already have a good working knowledge of C programming and who need to take the next step in mastering C by gaining a deep understanding of pointers.
If you’ve struggled with pointers and can’t quite figure out what all those ‘arrow diagrams’ really mean or what exactly is the relationship between pointers and addresses, this is the course for you. In a series of short, tightly-targeted lessons, you will learn all about: computer memory and how pointers access it; how memory is allocated and why copying data using pointers can cause program errors; why some pointers are ‘generic’ and what happens when you ‘cast’ them to specific types; how to create singly and doubly linked lists, stacks and queues; how to avoid memory leaks and other common problems… and much more.
The source code for all the example programs is provided, so if you need to try out my code you can load it and run it in your favourite C IDE or code editor.
- Pointers and addresses
- Indirection and multiple indirection
- Generic pointers and casts
- Memory allocation and reallocation
- Pointer arithmetic
- Singly and doubly linked lists
- Queues and stacks
- Deep and shallow copying
- Common pointer errors
Your Instructor
Huw Collingbourne has been a programmer for more than 30 years. He is a well-known technology writer in the UK. For over ten years he wrote the Delphi and Object Pascal programming column for PC Plus Magazine. He has also written numerous opinion and programming columns (including tutorials on C, C#, Java, Smalltalk, Delphi and Ruby) for a number of computer magazines, such as Computer Shopper, Flash & Flex Developer’s Magazine, PC Pro, and PC Plus.
He is author of a number of books on programming topics published by Bitwise Books: http://www.bitwisebooks.com.
In the 1980s he was a pop music journalist and interviewed most of the New Romantic stars, such as Duran Duran, Spandau Ballet, Adam Ant, Boy George, and Depeche Mode. He is now writing a series of New Romantic murder mysteries.
At various times Huw has been a magazine publisher, editor, and TV broadcaster. He has an MA in English from the University of Cambridge and holds a 2nd dan black belt in aikido, a martial art which he teaches in North Devon, UK (http://hartlandaikido.co.uk/). The aikido comes in useful when trying (usually unsuccessfully) to keep his Pyrenean Mountain Dogs under some semblance of control.
Course Curriculum
-
PreviewWhat is the relationship between a pointer and an array (3:46)
-
StartHow to display pointer values
-
PreviewArrays addresses and pointers (5:50)
-
StartMultiple Indirection (1:41)
-
StartMultiple indirection with integers (8:00)
-
StartMultiple indirection with strings (4:57)
-
StartIndirection and commandline args (3:20)
-
StartGeneric pointers (4:44)
-
StartAllocating memory (5:40)
-
Startmalloc and sizeof (4:44)
-
StartFunctions that cause errors or warnings (2:49)
-
Startcalloc (4:22)
-
StartFree (3:07)
-
Startrealloc (4:03)
-
StartPointer arithmetic (5:03)
-
StartCalculating an array index (3:36)
-
StartPointers to structs (6:47)
-
StartData type alignment (8:45)
-
StartType Alignment On Boundaries (2:06)
-
StartType alignment and pointer arithmetic (2:16)
-
StartDebugging C Programs (11:17)
-
StartDebugging Multiple Indirection (8:18)
-
StartStudy Notes – Step Two
-
StartArrays And Lists (1:26)
-
StartWhat is a linked list (3:40)
-
StartSingly linked lists (4:55)
-
StartTo Free Or Not To Free (0:45)
-
StartDoubly Linked Lists (2:10)
-
StartProgramming A Doubly Linked List (3:20)
-
StartInitializing a doubly linked list (1:10)
-
StartImplementing a doubly linked list (10:09)
-
StartWhat Is A Queue (2:35)
-
StartQueues (4:23)
-
StartWhat Is A Stack (2:10)
-
StartStacks (2:27)
-
StartPushing and popping (5:05)
-
StartCalculating the length of a list (3:15)
-
StartCopying a list (4:02)
-
StartRemoving an element from within a list (6:17)
-
StartAdding an element into a list (4:49)
-
StartFunction Pointers (1:04)
-
StartFunction pointer declarations (3:38)
-
StartAn array of function pointers (3:32)
-
StartStudy Notes – Step Three