https://medium.com/@zalbinarifqan19/mastering-the-essentials-key-concepts-every-c-enthusiast-should-know-887e130761e3