Skip to main content

C Pointers: Secrets every Embedded Engineer must know!

C Pointers is the most important, misunderstood, or partially understood concept when writing code for Embedded systems. Knowing how pointers work and how to use them in design can catapult your career and let you write compact, efficient, and elegant code.

C Pointers: Secrets every Embedded Engineer must know!

> 5.5 Hours of Video Content,
> 35 Lectures,
> 24 Assignments.
> 8 Modules
> Certificate of completion.

Access the Course Now!

Content designed and created by the Team inPajama! Everything we felt we should have known earlier in our Careers concerning the Pointer in C, we put it in the Course!

Course Walkthrough

In the video below, Piyush explains the structure of the course and gives a breakdown of different sections and the topics covered. Each lecture is short, to the point, accompanied by real-life examples, and followed by assignments to help you reinforce the concepts.

All the examples are hands-on, you can try them on your machine or Github codespaces. All you need is access to the internet take this course!

Mental Models and Visualisations!

This course is easy to follow and at every step along the way, Piyush draws drawings and sketches to explain in detail (with intuition) what is happening under the hood. This will enable you to reason and use the pointers like a ninja! Following are screenshots from almost every lecture.

Course Contents and Preview Lectures!

SECTION 1: Mental Models, Motivation, and Reasoning about Pointers (7 lectures | 26 mins)

  • What to Imagine? (8:40)
  • Assignment - 1 
  • IMPORTANT: Checking results of the assignments (Resources (2) | 2:11)
  • What is a pointer? (7:00)
  • Assignment - 2 
  • Why pointers? (8:25)
  • Assignment - 3 

Preview: Section 1: Lecture 1: What to Imagine?

SECTION 2: Pointers: Syntax and Code (7 lectures | 25 mins)

  • Environment Setup (5:47)
  • Declaring/Defining a Pointer (9:51)
  • Assignment - 4 
  • Pointer Variable and Address (1:32)
  • * and & in relation to the pointer variable (4:17)
  • Declaration and Definition (4:02)
  • Assignment - 5 

Preview: Section 2: Lecture 2: Declaring/Defining a Pointer

SECTION 3: Multi-level Pointers (12 lectures | 1 hr 23 mins)

  • Use of * and & (Resources (1) | 23:38)
  • Assignment - 6 
  • Array and Pointers - Similarity and Differences (Resources (1) | 20:42)
  • Assignment - 7 
  • Many *s and Many &s (Resources (1) | 4:39)
  • Assignment - 8 
  • pointer to pointer (Resources (1) | 13:05)
  • Assignment - 9 
  • Array of pointers (Resources (1) | 13:05)
  • Assignment - 10 
  • Different types of Pointers (7:51)
  • Assignment - 11 

SECTION 4: Pointer to Data (7 lectures | 40 mins)

  • Pointing to data with a Datatype (Resources (1) | 7:08)
  • Assignment - 12 
  • Pointer to a struct, *, . and-> (Resources (1) | 12:28)
  • Assignment - 13 
  • Pointer Arithmetic (Resources (1) | 16:37)
  • Memory model and pointer to data (4:27)
  • Assignment - 14 

SECTION 5: Pointer to code - Function pointers or Callback (7 lectures | 39 mins)

  • What is a function pointer? (11:57)
  • function pointers syntax (Resources (1) | 10:46)
  • Assignment - 15 
  • typedef and function pointers (Resources (1) | 9:44)
  • Assignment - 16 
  • Example - function pointer array (Resources (1) | 6:44)
  • Assignment - 17

SECTION 6: Void Pointer (5 lectures | 39 mins)

  • What is a void pointer? (Resources (1) | 9:51)
  • Assignment - 18 
  • What is NULL and NULL pointer? (Resources (1) | 14:34)
  • Assignment - 19 
  • void pointers in - Linux source code (14:44) 

Section 6: Lecture 3: void pointers in - Linux source code

SECTION 7: Pointers, Dynamic allocation, and problems (11 lectures | 52 mins)

  • heap: malloc() and free() (Resources (1) | 13:19)
  • Allocation failure (Resources (1) | 13:44)
  • Assignment - 20 
  • Memory Leak (1:21)
  • Assignment - 21 
  • Dangling Pointer (6:00)
  • Assignment - 22 
  • Double free() (10:09)
  • Assignment - 23 
  • pointer manipulation and unowned memory (7:29)
  • Assignment - 24 

MODULE 8: Open Source code and Pointers (3 lectures | 17 mins)

  • Baremetal Code (9:04)
  • FreeRTOS (5:42)
  • Linux (2:54)


Following are screenshots from the course chat group.

Below are the formal course reviews filled out by the students by filling out a form on the course website.


You will get a certificate for completing 95% of the course content.

The concepts are explained in a very simplified manner to ensure you thoroughly understand the key concepts.

The assignments are specially designed to reinforce the learning from the lectures.


Do I need a high-performing machine to follow the course?

No. All the examples are executed on GitHub codespaces. This is like having a machine in the cloud. All the tools are already installed and you do not have to do any local setup.

Will I get a certificate?

Yes! As stated above, completing 95% of the coursework before access expiry will fetch you the certificate.

Where is the certificate?

The Certificate will be delivered as a PDF to your email address.

Who should take this course? 

This course is ideal for programmers with a basic understanding of C who want to learn about pointers and unlock their potential for more powerful programming.

How long will I have access to the course? 

You will have 365 days of unlimited access to the course materials upon enrollment.

Will the course include practical exercises? 

Yes. The assignments will provide opportunities to try out examples. You can also follow the examples stated in the lectures.

What level of C programming experience is required? 

A basic understanding of the C syntax is expected. Because the course focuses heavily on pointers, some familiarity with pointers will enable you to get the most out of the course.

What format is the course delivered in? 

The course is delivered in recorded video format with resources and assignments for the student to check their understanding.

Can I access the course on mobile devices? 

Yes. You can access the course from mobile, tablet, and desktop. We recommend using a Desktop to access the course for the best experience.

Does the course offer any support if I get stuck? 

Yes. You can submit the question you have on the messages/chat space or submit it in the Q/A section and the team will attend to it.

Have a question?

Reach us at

Connect with us


Join the Embedded Systems Party, inPyjama! Discord Server!
Embedded Systems guide, for everyone! This is the official โ€œEmbedded Systems, in Pyajamaโ€ community by! | 1990 members


Embedded Systems, in Pyjama!
๐‰๐จ๐ข๐ง ๐ญ๐ก๐ž ๐œ๐จ๐ฆ๐ฆ๐ฎ๐ง๐ข๐ญ๐ฒ (๐ƒ๐ข๐ฌ๐œ๐จ๐ซ๐): ๐˜๐จ๐ฎ๐“๐ฎ๐›๐ž ๐Œ๐ž๐ฆ๐›๐ž๐ซ๐ฌ๐ก๐ข๐ฉ: We are a bunch of embedded systems engineers trying to give back to the community by publishing and organizing content on various topics that an embedded engineer or an aspiring engineer might be interested in. We curate content on Embedded Systems to help our readers (beginners or professionals) become better engineers and grow as a professional (anxiety-free). Topics include - - C, C++, Assembly Language, Rust, and Python. - ARM (A/M Class) and RISC-V CPU Architecture. - Operating Systems (Linux/RTOS/Baremetal). - Digital Hardware Design and FPGAs. - Command line Tools and Utilities. - Career and Productivity tips, Lectures, Notes, Courses, Blogs, and interesting links. ๐‰๐จ๐ข๐ง ๐ญ๐ก๐ž ๐œ๐จ๐ฆ๐ฆ๐ฎ๐ง๐ข๐ญ๐ฒ (๐ƒ๐ข๐ฌ๐œ๐จ๐ซ๐): ๐˜๐จ๐ฎ๐“๐ฎ๐›๐ž ๐Œ๐ž๐ฆ๐›๐ž๐ซ๐ฌ๐ก๐ข๐ฉ:



Rajat Batra - Google | LinkedIn
Experience: Google ยท Education: Birla Institute of Technology and Science, Pilani ยท Location: Bengaluru ยท 500+ connections on LinkedIn. View Rajat Batraโ€™s profile on LinkedIn, a professional community of 1 billion members.
Dev Bishnoi - Google | LinkedIn
Have been part of the Silicon SW team delivering end to end Software to enable AI firstโ€ฆ ยท Experience: Google ยท Education: National Institute of Technology, Kurukshetra, Haryana ยท Location: Bengaluru ยท 500+ connections on LinkedIn. View Dev Bishnoiโ€™s profile on LinkedIn, a professional community of 1 billion members.
Mahmad Bharmal - Google | LinkedIn
Firmware Engineer with the expertise in C and assembly language. ยท Experience: Google ยท Education: Malaviya National Institute of Technology Jaipur ยท Location: Bengaluru ยท 500+ connections on LinkedIn. View Mahmad Bharmalโ€™s profile on LinkedIn, a professional community of 1 billion members.
Wasim Akram - Google | LinkedIn
Experienced Engineer with a demonstrated history of working in the Embedded industryโ€ฆ ยท Experience: Google ยท Education: Aurora's Technological and Research Institute , Hyderabad ยท Location: Bengaluru ยท 500+ connections on LinkedIn. View Wasim Akramโ€™s profile on LinkedIn, a professional community of 1 billion members.

Signup for updates and Newsletter