4.53 out of 5
4.53
842 reviews on Udemy

C Programming Masterclass: Pointers & Advanced C Language

C Programming Advanced Topics: Pointers, Memory, Low-Level C Language and Embedded C Preparation
Instructor:
Vlad Budnitski
10,388 students enrolled
English [Auto]
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

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 2023 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?

  1. Investment of Time: We’ve spent hundreds of hours perfecting this course to make your C language learning experience engaging and fun.

  2. 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.

  3. Ease of Learning: Don’t worry about getting confused or lost. We’re experts at breaking down difficult concepts into easily digestible content.

  4. 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.

  5. Hands-On Training: Theory is good, but practice is better. We provide lots of exercises, complete with video solutions to help cement your knowledge.

  6. 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.

Welcome Aboard!

1
Course Introduction
2
About the course
3
Quick Update: scanf & CRT - how to work with it?

Pointers - Introduction to Basics

1
Introduction to Pointers + General Visualization
2
Why using Pointers? [Reasons & Motivation]
3
Another reasons and motivation behind the usage of pointers
4
Declaration & Usage of Pointers
5
Pointers Initialization
6
Short Dereference
7
Challenge #1 - Printing Value & Address of a Variable
8
Challenge #2 - Guessing the Output
9
Exclusive Pass By Reference Guide
10
Quick Summary

Pointers Arithmetic & “sizeof” operator

1
Pointers Arithmetic Introduction
2
Pointers Arithmetic Examples
3
Rules - Summary
4
Pointers Arithmetic - DIY Exercises
5
The "sizeof" Operator - Introduction
6
The "sizeof" Operator - Basic Practice
7
"sizeof" & Static Arrays
8
"sizeof" & Pointers

Pointers Concept and Beyond

1
Exercise - Swap Function
2
Milestone #1 - Develop Your Real Swap Function!
3
Milestone #1 - Solution
4
Multiple Indirection
5
Generic Pointer (void star) - What is “void *”? [Generic Universal Pointer]
6
Generic Swap Function (including "memcpy" function)
7
Assignment: Implementing Different Data Swapping Techniques in C

Arrays & Pointers - Theory & Practical Exercises

1
Arrays - Memory Representation
2
Passing an Array to a Function
3
Search if an Element is in a Given Array
4
Challenge#1 [Question]: Function to Find Maximum Value of an Array and Return it
5
Challenge#1 [Solution]: Function to Find Maximum Value of an Array and Return it
6
Challenge #2 [Question]: Calculates the Average Value of an Array (using 2 func)
7
Challenge #2 [Solution]: Calculates the Average Value of an Array (using 2 func)
8
Input & Print Functions - (useful for any given array)
9
Challenge #3 - Finding and Passing by Pointer - “Min” & “Max” values of an array
10
Challenge #3.1 [Additional] - Function to Update the Average by Reference
11
Challenge #3.1 [Solution] - Function to Update the Average by Reference
12
Challenge #4 - Does Array Has An Element With Good Neighbors - Question
13
Challenge #4 - Does Array Has An Element With Good Neighbors - Solution
14
Challenge #5 - Function To Find If Array Is Sorted Or Not - Question
15
Challenge #5 - Iterative Solution
16
Challenge #5 - Advanced Recursive Solution [Using Recursion & Functions]
17
Challenge #6 -Reverse Array using Pointers Arithmetic - Iter. & Recursive - Q.
18
Challenge #6 -Reverse Array using Pointers Arithmetic - Iter. & Recursive - S.
19
(old version) - Exercise - Reverse Array Using Recursion And Pointer Arithmetic
20
Challenge #7 - Count and Print the Frequency of Each Array's Element - Question
21
Challenge #7 - Count and Print the Frequency of Each Array's Element - Solution
22
Challenge #8 - Find & Return the "Second Smallest" Element - Question
23
Challenge #8 - Find & Return the "Second Smallest" Element - Solution
24
Challenge #9 - Find 2 specific elements in Sorted Array O(n^2) & O(n) - Question
25
Challenge #9 - Find 2 specific elements in Sorted Array O(n^2) & O(n) - Solution
26
Challenge #9 - Find 2 specific elements - Optimized Solution
27
ATTENTION! Problem with Returning a Static Array from a Function
28
Extra Practice #1 - Recursion - is Array of Integers a Palindrome - Question
29
Extra Practice #1 - Recursion - is Array of Integers a Palindrome - Solution
30
Extra Practice #2 - Exchanging Signs Array Recursively - Question
31
Extra Practice #2 - Exchanging Signs Array - Solution
32
Extra Practice #3 - Maximum of 2 Adjacent Elements (using pointers) - Question
33
Extra Practice #3 - Maximum of 2 Adjacent Elements (using pointers) - Solution
34
Extra Practice #4 - Print Array Elements using Pointers in C - Question
35
Extra Practice #4 - Print Array Elements using Pointers in C - Solution
36
Extra Practice #5 - Recursively using Pointers & Functions - Find Array Average
37
Extra Practice #5 - Recursively using Pointers & Functions - Find Average - Sol.
38
Extra Practice #6 - Adjacent Elements Parts Sorted in Floating Point Array - Q.
39
Extra Practice #6 - Adjacent Elements Parts Sorted in Floating Point Array - S.
40
Extra Practice #7 - Print Number in Binary using Recursion Function - Question
41
Extra Practice #7 - Print Number in Binary using Recursion Function - Solution

Arrays Swapping Exercises - Intermediate to Expert Questions!

1
Swapping in O(n) Complexity
2
Swapping in O(1) Complexity
3
SwapArray(O1) - Further Visualization & Additional Clarification - part 1
4
SwapArray(O1) - Further Visualization & Additional Clarification - part 2

Dynamic Memory Allocation

1
What is DMA and why we may need it?
2
“malloc" function
3
Challenge #1 - Creating and Returning a Dynamically Allocated Array from a Func
4
Challenge #2 - Print Dynamically Allocated Array
5
“calloc” function
6
“free” function
7
Dangling Pointer
8
Finding Memory Leakages [Valgrind]
9
“realloc” function
10
“realloc” issues
11
"realloc" - practical code example
12
Implementing your own “universal realloc function” - Question
13
Implementing your own “universal realloc function” - Solution #1
14
Implementing your own “universal realloc function” - Solution #2 - using memcpy
15
Adjustable Reallocation + Performance - Question
16
Adjustable Reallocation + Performance - Explanation & Solution
17
IMPORTANT Question - Create and Pass 1D Array using Pointer to Pointer!
18
IMPORTANT Solution - Create and Pass 1D Array using Pointer to Pointer!
19
Assignment: Mastering Dynamic Memory Allocation in C

Advanced Exercises - Pointers & DMA

You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.5
4.5 out of 5
842 Ratings

Detailed Rating

Stars 5
487
Stars 4
261
Stars 3
68
Stars 2
10
Stars 1
11
3bd32bc68ad7361baeabe3043a0239f5
30-Day Money-Back Guarantee

Includes

41 hours on-demand video
2 articles
Full lifetime access
Access on mobile and TV
Certificate of Completion