Course Overview
Welcome to the "Advanced C Programming Masterclass: Pointers & Memory in C"! This best-seller course is designed to elevate your C programming skills, with a particular focus on the C language, topics related to embedded C, and advanced C.
Introduction
C programming language still remains one of the most popular and used languages in 2025 and has great career options in different industries, such as:
- Cyber Security.
- Smart Homes & Smart Cities.
- Drones.
- And especially in Embedded Systems.
What will you learn in this course?
There is an 'ancient' phrase saying "to become an expert in C - you need to master pointers".
One of the main objectives of this course is designed to take your basic knowledge of pointers (one of the most significant topics) to the next level. The goal is to take the basic skills you've gained so far in C programming and take this knowledge to a whole new level.
We will cover pointers, memory addressing, pointers to functions, advanced concepts of structs and dynamic memory allocation, and so much more.
The beauty of this course is that it regularly gets updated with new material. And the material being added to the course these days includes lots of information in the low-level programming (the bits and bytes), preparation for usage of Embedded C in Embedded Systems, and other very important topics for the next generation of engineers.
This course covers the topics in-depth, from different angles, and with various visualizations and illustrations - that should make the learning process of pointers and low-level programming much easier and fun for you.
Also, you will get a whole dedicated section on how to use a debugger and what is the debugging process that may help you so much in developing your future applications.
After completing this course you will gain plenty of new skills and knowledge that may improve your chances of getting a job position as a C Developer as well as increasing your chances to pass the exam (if you're still a student).
What's different about this course?
Vlad Budnitski will be your instructor for this course.
He has years of experience working as a Software Developer (also working with complex systems developed in C language). As well as 4 years of experience teaching C Programming for Beginners and Advanced C Programming in College.
So you got lucky on this one because you will get knowledge from a practical software developer and experienced instructor.
You will get a handpicked, concise, and straight to the point material that you will be amazed by the way these complicated pointers can be taught.
This course is also guided with concrete exercises, challenges, and full solution videos - that will help you to practice the materials.
Who's this course for?
First of all, this course is not for "absolute beginners" and it requires you to have at least the basic knowledge of programming. It's assumed you have some knowledge of the basics in C - preferably having completed our "C Programming for Beginners" course (here on Udemy).
This course is great both for students in college as well as graduates who need to learn and understand pointers in depth.
In addition, if you're planning to explore and master the Embedded Systems domain using Embedded C - then this course is a great preparation of various topics for the Embedded Domain. Once you master all the concepts of this course you'll be a few steps closer to proceeding and mastering Embedded Systems, programming Micro Controllers, etc.
So, once again, why this course?
Investment of Time: We've spent hundreds of hours perfecting this course to make your C language learning experience engaging and fun.
Best-Seller Status: Our course stands out among others. It's a top choice for learners due to its in-depth, easy-to-understand approach to complex C programming topics.
Ease of Learning: Don't worry about getting confused or lost. We're experts at breaking down difficult concepts into easily digestible content.
Staying Current: We keep our content fresh and relevant with constant updates and improvements. Currently, we offer over 40 hours of practical C programming content.
Hands-On Training: Theory is good, but practice is better. We provide lots of exercises, complete with video solutions to help cement your knowledge.
Community Support: Got questions or doubts? Our active Q&A community is here to provide answers and support your learning journey.
List of topics
Our course covers a wide variety of C programming topics including:
The ABCs of Pointersin C Language: From declaration, initialization, usage, to dereferencing and more
Unraveling Complex C Programming Concepts: Multiple indirection, pointer arithmetic, and generic pointers
Memory Management: Dive into dynamic memory allocation, using C functions like malloc, calloc, realloc, and free
Advanced C Topics: Learn about dangling pointers, using the Valgrind memory leak tool, sizeof operator, arrays, strings, and the secrets of using pointers in strings
Function Mastery: Grasp function pointers, arrays of pointers to functions, structs, and pointers
Debugging Skills: Enhance your problem-solving capabilities with debugger and debugging techniques in C
Further Exploration: Delve into 2D matrices with pointers, computer architecture, data and structs alignment, sequential and textual files, structural and binary files, and project management
Detailed Insights: Understand MACRO, Enums, Constants, Bitwise Operations (Embedded), and Bit Fields
And more!
Words From Our Students
Check out what our students have to say about their experience with us:
“The lecturer explains the material clearly and intelligibly. The teaching material is well developed. So far, so good!” - Andrejs Ogurcovs
“This course is amazing for embedded systems engineering. Inside of this course there are a lot of examples of curriculum also about pointers that makes it helpful for learning.Finally I have understood to pointers. I wıll use in embedded systems that i have learnt knowledge about c programming in this lecturer.Thanks for your effort Vlad. Best regards.” - Emre Çakır
“This course is AWESOME AWESOME AWESOME. I had so many courses for C, and all of them copied each other. They mention about pointers in just 1 (ONE) video (10 minutes). If you have a programming experience, start from this course. AWESOME AWESOME AWESOME. If I could have gave 1000 starts, I would do this. The examples, exercises, slides, topics, the voice of the teacher, everything is flawless” - beyza Erdoğan
“Having this opportunity to review C and Pointers is pretty awesome. I have learnt a lot from Vlad about C which could be regarded as the fundamental of almost every programming language. I have taken Vlad's course from C Bootcamp to this advanced pointer course, and now I am confident to say that I know about C because I understand pointers now!! Hoping there would be more algorithm contents in the future, thanks Vlad!” - Matsu Chen
“Hands down this is the best course I have ever done. Visual clarification was very useful for understanding what is happening behind the scenes. I hope Vlad makes extensions of this course with more advanced topics and exercises. Thanks Vlad!” - Venelin Stoyanov
“Vlad did a great job explaining, illustrating, and covering many essential topics in pointers with enough examples. After completing this course, I feel more confident in using pointers in c programming.” - Abdel Alkuor
“I did the first course C Programming Language for Beginners and I liked it. This course is in the same level or more until now. Thank you so much.” - João Henrique Berg dos Santos
“I struggled so much understanding pointers and how they work, and why do I need them, I also struggled with the dynamic memory allocation, but after that course I think everything cleared, and even if I am still not working perfectly with these things, I finally understood them and how they work. Thank you so much Vlad! It was pleasure watching your videos!” - Julia Vasileva
“Highly recommend taking this course for any student in college. Saved me so much time and effort. It was clearly explained, straight to the point, covered in a couple of hours more than my teacher covered in the entire semester.” - Nikolay
Do you still have doubts?
That's OK. Pointers can get us all confused to some extent... If you're still unsure if this course is exactly what you're looking for, feel free to go over the full detailed curriculum.
In addition, we offer a full money-back guarantee for 30 days. So, you can enroll risk-free today, and get ready to master the world of advanced C programming! We can't wait to start this journey with you.
FAQ
FAQ area empty
Course curriculum
-
Introduction to Pointers + General Visualization
475 -
Why using Pointers? [Reasons & Motivation]
775 -
Another reasons and motivation behind the usage of pointers
281 Xem trước -
Declaration & Usage of Pointers
900 -
Pointers Initialization
258 Xem trước -
Short Dereference
378 -
Challenge #1 - Printing Value & Address of a Variable
278 Xem trước -
Challenge #2 - Guessing the Output
544 Xem trước -
Exclusive Pass By Reference Guide
738 -
Quick Summary
214
-
Exercise - Swap Function
261 -
Milestone #1 - Develop Your Real Swap Function!
170 -
Milestone #1 - Solution
474 -
Multiple Indirection
301 -
Generic Pointer (void star) - What is “void *”? [Generic Universal Pointer]
897 -
Generic Swap Function (including "memcpy" function)
1313 -
Assignment: Implementing Different Data Swapping Techniques in C
-
Arrays - Memory Representation
243 -
Passing an Array to a Function
514 -
Search if an Element is in a Given Array
705 -
Challenge#1 [Question]: Function to Find Maximum Value of an Array and Return it
66 -
Challenge#1 [Solution]: Function to Find Maximum Value of an Array and Return it
347 -
Challenge #2 [Question]: Calculates the Average Value of an Array (using 2 func)
140 -
Challenge #2 [Solution]: Calculates the Average Value of an Array (using 2 func)
539 -
Input & Print Functions - (useful for any given array)
505 -
Challenge #3 - Finding and Passing by Pointer - “Min” & “Max” values of an array
640 -
Challenge #3.1 [Additional] - Function to Update the Average by Reference
148 -
Challenge #3.1 [Solution] - Function to Update the Average by Reference
609 -
Challenge #4 - Does Array Has An Element With Good Neighbors - Question
266 -
Challenge #4 - Does Array Has An Element With Good Neighbors - Solution
309 -
Challenge #5 - Function To Find If Array Is Sorted Or Not - Question
266 -
Challenge #5 - Iterative Solution
1119 -
Challenge #5 - Advanced Recursive Solution [Using Recursion & Functions]
1084 -
Challenge #6 -Reverse Array using Pointers Arithmetic - Iter. & Recursive - Q.
148 -
Challenge #6 -Reverse Array using Pointers Arithmetic - Iter. & Recursive - S.
654 -
(old version) - Exercise - Reverse Array Using Recursion And Pointer Arithmetic
1056 -
Challenge #7 - Count and Print the Frequency of Each Array's Element - Question
244 -
Challenge #7 - Count and Print the Frequency of Each Array's Element - Solution
918 -
Challenge #8 - Find & Return the "Second Smallest" Element - Question
99 -
Challenge #8 - Find & Return the "Second Smallest" Element - Solution
675 -
Challenge #9 - Find 2 specific elements in Sorted Array O(n^2) & O(n) - Question
333 -
Challenge #9 - Find 2 specific elements in Sorted Array O(n^2) & O(n) - Solution
540 -
Challenge #9 - Find 2 specific elements - Optimized Solution
643 -
ATTENTION! Problem with Returning a Static Array from a Function
732 -
Extra Practice #1 - Recursion - is Array of Integers a Palindrome - Question
230 -
Extra Practice #1 - Recursion - is Array of Integers a Palindrome - Solution
873 -
Extra Practice #2 - Exchanging Signs Array Recursively - Question
220 -
Extra Practice #2 - Exchanging Signs Array - Solution
1052 -
Extra Practice #3 - Maximum of 2 Adjacent Elements (using pointers) - Question
184 -
Extra Practice #3 - Maximum of 2 Adjacent Elements (using pointers) - Solution
985 -
Extra Practice #4 - Print Array Elements using Pointers in C - Question
155 -
Extra Practice #4 - Print Array Elements using Pointers in C - Solution
758 -
Extra Practice #5 - Recursively using Pointers & Functions - Find Array Average
151 -
Extra Practice #5 - Recursively using Pointers & Functions - Find Average - Sol.
760 -
Extra Practice #6 - Adjacent Elements Parts Sorted in Floating Point Array - Q.
353 -
Extra Practice #6 - Adjacent Elements Parts Sorted in Floating Point Array - S.
614 -
Extra Practice #7 - Print Number in Binary using Recursion Function - Question
172 -
Extra Practice #7 - Print Number in Binary using Recursion Function - Solution
819
-
What is DMA and why we may need it?
513 -
“malloc" function
1237 -
Challenge #1 - Creating and Returning a Dynamically Allocated Array from a Func
529 -
Challenge #2 - Print Dynamically Allocated Array
434 -
“calloc” function
503 -
“free” function
889 -
Dangling Pointer
479 -
Finding Memory Leakages [Valgrind]
336 -
“realloc” function
817 -
“realloc” issues
385 -
"realloc" - practical code example
1059 -
Implementing your own “universal realloc function” - Question
408 -
Implementing your own “universal realloc function” - Solution #1
1298 -
Implementing your own “universal realloc function” - Solution #2 - using memcpy
311 -
Adjustable Reallocation + Performance - Question
164 -
Adjustable Reallocation + Performance - Explanation & Solution
1486 -
IMPORTANT Question - Create and Pass 1D Array using Pointer to Pointer!
176 -
IMPORTANT Solution - Create and Pass 1D Array using Pointer to Pointer!
874 -
Assignment: Mastering Dynamic Memory Allocation in C
-
Exercise #1 - Creating a “new array” with NO DUPLICATES
1824 -
Exercise #2 - Splitting “source array” into ODD and EVEN arrays
1005 -
Exercise #3 - “Lower Case” & “Upper Case” arrays allocation
746 -
Advanced: Practical Universal Insert Function - Question
325 -
Advanced: Practical Universal Insert Function - Solution
1215 -
Advanced: Practical Universal Remove Function - Question
149 -
Advanced: Practical Universal Remove Function - Solution
584 -
Question - Copy an Array and pass a new one by Reference
119 -
Solution - Copy an Array and pass a new one by Reference
633
-
Dynamic Matrix - Introduction
202 -
Arrays of Pointers - Introduction & Usage
894 -
Usage of Arrays of Pointers VS Static 2D Arrays
503 -
Creating a Totally Dynamically 2D Array
692 -
Developing the “allocate2DMatrix” function
845 -
Developing the “print2DMatrix” function
444 -
Developing the “freeMatrix” function
367 -
Practice Questions - 2D Dynamic Arrays - Question
414 -
Swap 2 rows in 2D Dynamic Array - using Universal Approach (solution)
975 -
Swap 2 columns in 2D Dynamic Array - for 2D Integer Arrays
441 -
Question - 2 functions - lower and upper triangle matrix functions
560 -
Solution - 2 functions - lower and upper triangle matrix creation
825 -
Question - write two functions to PRINT - lower and upper triangle matrix
246 -
Solution - 2 functions to print - lower and upper triangle matrix
477 -
Intermediate: 2D Matrix Allocation and Passing by Reference Function - Question
266 -
Intermediate: 2D Matrix Allocation and Passing by Reference Function - Solution
1019
-
Library Functions Implementation - Introduction
210 -
Finding String Length - Implementation in C (using pointers)
282 -
Concatenating 2 Strings - Implementation in C (using pointers)
796 -
Copying One String Into Another - Implementation in C (using pointers)
863 -
Comparing 2 Strings - Implementation in C (using pointers)
800
-
Introduction to Debugging
370 -
Debugger & Debugging Process - Learning the Basics
819 -
Using Breakpoints Effectively
629 -
Viewing Memory Representation in a Debugger Mode.
881 -
Debugging & Pointers - easy memory representation
722 -
Arrays & Pointers Arithmetic (diving deeper with the debugging process)
484 -
Debugging - Strings & 2D Matrix
336
-
Creating Arrays of Struct Variables in a Static Manner
892 -
Dynamically Allocated Array of Structs.
543 -
Passing structs to functions by value + Updating by Pointer
534 -
Structs Composition
689 -
Exercise: 2 functions to dynamically allocate an array of structs - Question
122 -
Exercise: 2 functions to dynamically allocate an array of structs - Solution
850
-
Project - School Management - Description & Requirements
-
Project - School Management - Developing the Project Together! Step-By-Step
4216 -
System Simulation
2363 -
School Management - Adding Functions for Freeing Dynamically Allocated Memory
942 -
Adding additional functions - Extending the Project
1651 -
Project - School Management - Summary
417
-
Introduction to Padding (Data Alignment with Structs) - Structure Padding in C
861 -
Practical Struct Variable Memory Utilization
759 -
Example #1 - Struct Memory Utilization and Data Alignment (+padding)
584 -
Example #2 - Reorganizing Members Order and its Affect on Memory Utilization
380 -
Exercise #1 - Structs, Members Organization, Data Alignment and Memory - Quest.
96 -
Exercise #1 - Structs, Members Organization, Data Alignment and Memory - Sol.
180 -
Adding Data Member to Struct without Increasing the Size of a Variable in Memory
205 -
Exercise #2 - Structs, Members Organization, Data Alignment and Memory - Quest.
58 -
Exercise #2 - Structs, Members Organization, Data Alignment and Memory - Sol.
203 -
Data Alignment and Padding with Structs Composition
426 -
Tightly packing & Packing to not aligned data
419 -
Structs Alignment Practice Test
0
-
Exercise - Sorting an Array Using Function Pointers - Question
470 -
Exercise - Sorting an Array Using Function Pointers - Solution
1209 -
Project - Pizza Making - A Delicious Use of Function Pointers - Question
763 -
Project - Pizza Making - A Delicious Use of Function Pointers - Solution
925 -
Using Function Pointers with Void Universal Pointers in C
1586
-
"remove" function - introduction
795 -
"remove" function - practical examples
434 -
"rename" function - introduction
611 -
"rename" function - practical exercise - question
324 -
"rename" function - practical exercise - solution
779 -
Functions for working and finding File's Location
1092 -
Practical example - demonstrating the usage of ftell, fseek, and rewind function
730 -
Understanding .dat vs .txt Files
560 -
Exercise #1 - Function to Remove Space Characters - Question
155 -
Exercise #1 - Function to Remove Space Characters - Solution
623 -
Exercise #2 - Function to Split Odd Even Files - Question
183 -
Exercise #2 - Function to Split Odd Even Files - Solution
645 -
Exercise #3 - Function Comparing 2 Textual Files - Question
175 -
Exercise #3 - Function Comparing 2 Textual Files - Solution
687 -
Assignment: File Manipulation in C
-
Common things to note when working with Sequential (Textual) files
982 -
Introduction to Structured Files
459 -
Writing a Structure Record to a File
557 -
Writing 2 Points read from the user to a file
472 -
Writing an array of points to a file.
554 -
Search for a specific point in a file. Reading.
618 -
["rb+" Mode Example] - Edit a specific point in the file
602 -
Multiply by 3 a specific point in the file
873 -
Challenge Reverse the Order of Points in a File - Question
381 -
Challenge Reverse the Order of Points in a File - Solution
689 -
["ab" Mode Example] - Adding a Point to an Existing File
226 -
Challenge - Deleting a Point from the File - Question
378 -
Challenge - Deleting a Point from the File - Solution
879 -
Advanced Binary Student Records - Project - Question
424 -
Advanced Binary Student Records - Project - Solution
1292
-
Function - FreqAsValue - Question
337 -
Function - FreqAsValue - Solution
596 -
Function - FindDominantValue - Question
378 -
Function - FindDominantValue - Solution
636 -
Function - FindSpecificValueMaxSum - Question
357 -
Function - FindSpecificValueMaxSum - Solution
620 -
Function - FindLargestMissingValue - Question
385 -
Function - FindLargestMissingValue - Solution
703 -
Function - areAllCharactersIncluded - Question
445 -
Function - areAllCharactersIncluded - Solution
833
-
Introduction to Bitwise Operations + NOT operator
286 -
The AND bitwise operator
400 -
The OR bitwise operator
201 -
The XOR bitwise operator and its relation to TOGGLE
338 -
Using NOT, AND, OR, XOR in your own programming language
612 -
Demonstration in CC++ - Bitwise NOT, AND, OR, XOR
430 -
Introduction to Bit Masks
300 -
Finding the rightmost digit using a masking bitwise AND
562 -
Finding the leftmost digit using a masking bitwise AND
363 -
Finding specific combinations of bits in a value - using bit masking
614 -
Introducing the Masking Process to Set Specific bits using bitwise OR operator
381 -
Practicing Setting specific bits
297 -
Masking Process to Turn-Off Specific Bits using the AND bitwise operator
516 -
14. Introducing the XOR operator for Toggle Functionality
395 -
Shift Left & Shift Right Operators
779 -
Displaying a number in binary (using Bitwise Shift Operators) [Implementation]
995 -
Implementing Bitwise Right Rotation
863 -
Implementing Bitwise Left Rotation
357 -
Interview Level Question: Exercise - Implement Swap using Bitwise Operations
201 -
Solution - Implement Swap using Bitwise Operations - without THIRD VARIABLE
944 -
Assignment: Bitwise Operations in C
-
Introduction to Bit Fields
151 -
How to use Bit Fields in C
360 -
Reading and Writing Bit Fields - Code Example
314 -
Practical Example Control Register using Bit Fields Struct
903 -
Updating the Control Register Bit Fields
260 -
Exercise - File Permissions - File System Info - Question
460 -
Exercise - File Permissions - File System Info - Solution
584 -
Bit Fields - Summary
277
Requirment
-
Basic knowledge of C programming language - ideally having completed my "C Programming for Beginners" course on Udemy
-
A computer with Windows, Linux or Mac OS
-
At least 4GB RAM (recommended)
Outcomes
-
Introduction To Pointers For Beginners
-
Pointers Declaration, Initialization, and Usage
-
Pointers Dereferencing
-
Multiple Indirection
-
Pointers Arithmetics
-
Generic Pointers
-
Dynamic Memory Allocation
-
"malloc" function
-
"calloc" function
-
"realloc" function & "issues"
-
"free" function
-
Dangling Pointers
-
Memory Leakage Tool - Valgrind
-
Pointers Arithmetic
-
"sizeof" operator
-
Arrays & Pointers
-
Strings & Pointers
-
A few Secrets of Strings using Pointers
-
Function Pointers
-
Arrays of Pointers to Functions
-
Structs & Pointers
-
Debugger & Debugging
-
2D Matrix with Pointers
-
Introduction to Computer Architecture
-
Data & Structs Alignment
-
Sequential and Textual Files
-
Structural and Binary Files
-
Project Management
-
MACRO
-
Enums
-
Constants
-
Bitwise Operations (Embedded)
-
Bit Fields
0 Student
1 Course
0 review