Pointers (in C)

significance, mechanics and use in design.

NOTE: This course is already included in the Library Access!

In one intense, code-first course you’ll build rock-solid mental models, wield multi-level pointers, function callbacks, void*, and heap safely, then read real kernel source like a pro.

From “&” vs “*” to dodging leaks and dangling pointers, leave with the exact pointer super-powers that separate junior coders from firmware ninjas.

Zero fluff, 100 % hands-on.

Bestseller Beginner Intermediate

(4.9) (48 ratings) 760+ students enrolled.

Last updated: 8 November 2025 | English | 365 days Access.


includes

~ 5 hr 30 mins  of recorded video lectures.
33  lessons.
 based experiments.
15  downloadable resources.
Certificate  on completion of course.
Cheat sheets and/or quick reference guides.
Case studies based on open-source code.
Coding exercises and challenges.

what you will master through the journey

Develop mental models for visualizing and reasoning about pointers.
Learn what a pointer fundamentally is and how to imagine its behavior.
Explore the motivations and reasons for using pointers in C programming.
Set up an environment for working with pointers in code.
Master the syntax for declaring and defining pointers.
Grasp the relationship between pointer variables and memory addresses.
Understand the roles of the * (dereference) and & (address-of) operators in relation to pointers.
Work with multi-level pointers and their applications.
Apply multiple * and & operators effectively in code.
Differentiate between pointers to pointers and arrays of pointers.
Identify similarities and differences between arrays and pointers.
Learn about pointers to data and how they reference data with specific types.
Use pointers with structures, including the * (dereference), . (dot), and -> (arrow) operators.
Perform pointer arithmetic and understand its implications.
Comprehend the memory model in relation to pointers and data.
Understand function pointers (callbacks) and their purpose.
Master the syntax for declaring and using function pointers.
Utilize typedef with function pointers for cleaner code.
Implement examples like arrays of function pointers.
Learn about void pointers and their flexibility.
Differentiate between NULL and NULL pointers, including their uses.
Examine real-world examples of void pointers in Linux source code.
Handle dynamic memory allocation using heap, malloc(), and free().
Manage allocation failures and best practices for error handling.
Identify and prevent memory leaks in pointer-based code.
Recognize and avoid dangling pointers.
Understand the risks of double free() and how to prevent them.
Avoid pointer manipulation issues and accessing unowned memory.
Analyze pointers in open-source baremetal code.
Explore pointer usage in FreeRTOS.
Study pointer implementations in Linux source code.

contents and preview lectures ...

The Design and Deliberation

I am a big believer of mental models and visualisations when it comes to learning technical concepts. This course is deliberately heavy on insight and frameworks of thinking about pointers.

Pointers in C is a straight forward concept but it has earned a reputation for being hard to understand. In my opinion, the problem is - most of those who try and learn pointers don’t understand how and what to imagine and reason based off of.

From the very first lecture, you’ll notice that I explain key concepts with visualisation and mental models along with a hands on experiment to prove the point. The course is loaded with insights that will empower you to your pointers like a pro!

Certificate

The journey through the course is a challenging one! Our courses are packed with insights and will take time to sink in. You will be awarded with a Certificate of Mastery when you complete 95% of the course work.

What you see above is a sample certificate. The design of this certificate will be modified from time to time to make it more shiny and reflect the rightly earned pride!

There will always be a dedicated certificate identification number to verify it with us. This should enable anyone to check the authenticity of the certificate.

How this is different from Others

FeatureUs!Others
Explain what pointer in C is.
Code development without IDE, like how the professionals do it.
Decomposition of code into Assembly to understand the CPU-Memory interactions.
Mental models to aid thinking and reasoning.
A Bottom-Up Approach with the tinge of answering the `Whys`.
Real and applicable Case study and programming projects
Teach with insights at the CPU level.

Instructors

Piyush Itankar
Embedded Engineer (L5), Google
Electrical Engineer holding a Master’s degree in Embedded Systems, with a proven track record at industry giants. At Intel, contributed expertise to Navigation Firmware, Bluetooth Driver development, and RF validation software. Currently thriving as an Embedded Software Engineer at Google, drove innovation in Firmware development for the Power Management Sub-system on Tensor SoCs (Pixel Phones) and presently advancing system software for the Pixel Watch.

Requirements

GitHub account to do the hands-on coding in Codespaces.
Some familiarity with the C programming language.
Interest in mastering the concept of Pointers.

Who this course is for

Students in Academia with C as a subject in the course.
Those using the C language for development (Embedded Systems Engineers, System Software Engineers etc).
Embedded systems or Firmware Engineers.
Anyone seeking gain system level insights.
Anyone curious to learn the underlying details of Systems and how to program it using pointers.

FAQs