C and C++ programming tutorial online

A C and C++ programming tutorial for everyone. You may use the materials given in this site as a beginner’s guide(to C and C++ programming) or you may use it as a reference if you are already familiar with C and C++ languages. Besides the basic C and C++ topics, the new features added to the languages such as C11, C++11, C++14, C++17 and C++20 will be also discussed. Every effort will be made to cover all the topics as much as possible. If any mistake or misinterpretation of the concept is found just drop us an email, any suggestion to improve the content of this site is always welcome if you have any other issue we are always there just shout out to us!! 🙂

C is part of C++!

Even if the title suggests, I do not mean to give a history on C and C++ or how it came to be, search Google for that. I rather want to convey that C is part of C++ and if you read the history of C++ you will find that C++ is rather built from C, but with much more power and versatility, but of course, C still triumph in speed though. The simple fact is, you can just get started with C++ without learning C and C++ cover most of the topics of C, some of the recent features being an exception. So, either you are learning C or C++ you can jump back and forth between the two with little or no effort. But note, fully understanding the concepts of Object-oriented programming, inheritance, polymorphism, etc. requires a little more effort, but still, C++ is fun so you will cover them in no time. Lastly, before we begin a quote from the C++ creator; rather a comparison between C and C++:

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.

*Bjarne Stroustrup


001-Data types



002-C of C++


->C++ execution control statement : if() else{ }

->C++ do() while control execution statement

->C++ while executive control statement

->C++ for() control executive statement

->C++ switch() case control execution statement

->C++ array : myths and conception

->C++ accessing an array

->C++ what is function?

->C++ Function declaration and definition and their differences

->C++ function parameters and arguments

->C++ reference

->C++ pointers – everything you need to know about

->Relation between pointers and array in C++

->C++ Void pointers-everything you need to know

->C++ Difference between pointer and reference and their uses

->C++ multidimensional arrays:2D , 3D and 10D array

->C++ pointers and multidimensional array

->passing array to function and returning array from function C++

->Passing multidimensional array to a function returning multidimensional array from function

->C type enum : unscoped enumeration

->Properties of enumeration and enumerators C++

->C++ static_cast function

->C++ const_cast casting

->C++ reinterpret cast

->C++ Preprocessor directives #include

->C++ #if , #elif ,#else ,#endif preprocessor conditional directives

->C++ the #ifndef , #define preprocessor directives

->C++ #line, #error , #undef , #pragma preprocessor directives

->C++ Using Ellipsis (…) or variable argument list-everything you need to know



->C++ exchanging the array name and index value when accessing the array element

->C++11 initializer_list everything you need to know about


C++11 , C++14 and C++17

-> C++11 allocator_traits: uses

-> C++11 auto keyword

-> C++11 bad weak pointer

->C++11 allocator : optimized way to allocate storage

->C++ allocator class member functions

->C++11 constexpr

->C++11 constexpr function

->Difference between const and constexpr

->C++11 decltype() keyword.

->C++11 =default and =delete keywords

->C++11 difference between random engine and predefined engine

->4 disadvantage of C++ shared pointer smart pointers

->C++11 enable_shared_from_this uses

->2 points why unique_ptr should be preferred

->3 points why shared_ptr and unqiue_ptr constructor are made explicit?

->C++11 range-based for loop

->C++11 random engine and engine adapters with predefined parameters -predefined engine

->C++11 scoped enumeration

->C++11 shared pointer class internal workings with code example

-> shared pointer member functions

->C++11 Shared pointer smart pointers ; why is it call shared pointers?

-> C++11 unique_ptr : what makes it unique? (includes C++14 features)

->C++ unique_ptr member functions swap,release,reset

->weak pointer Member functions use_count, reset, expired, lock, swap

->C++11 weak pointer : a weaker shared_ptr

C++ miscellaneous

->C++ constant time ,linear time and logarithmic time

->Create static library with code blocks and create dynamic library with Code::blocks(with pictures)

->Compile-time and run-time , stack and heap , static, dynamic and automatic in C++

->C++ First Program

->C++ difference between library and headers file

->C++ what is static library and dynamic Library

->Enable C++17 in Code blocks MinGw GCC for all version (with pictures)

->how to make C++ headers file Code::blocks

->IDE | GUI | Compiler | Debugger | source code

->Obtain Assembly code of C++ from Code::blocks/Mingw.

->Standard C++ library(includes C++11 Library)

**If you are confused which IDE to choose you can watch the video below