Skip to content

Latest commit

 

History

History
105 lines (77 loc) · 8.47 KB

README.md

File metadata and controls

105 lines (77 loc) · 8.47 KB

Contributors Forks Stargazers Issues ULicense LinkedIn

advanced c

by: Rafael V. Volkmer - @RafaelVVolkmer - rafael.v.volkmer@gmail.com

- Project Description

Advanced C is a repository focused on sharing small explanatory examples of advanced topics in the C programming language. It is divided into small cases, which come with sample code that can be tested in any IDE or online compiler for learning purposes, as well as an explanatory diagram in excalidraw, which illustrates the interaction of the code with the basic concept of the problem exposed, such as memory usage and other topics. Along with this, there is also an explanation of why the cases occur and how to deal with them.

It is a great opportunity to delve deeper into some niche points of the language, in order to enrich the code and the understanding of standard topics, which can be used in any development environment, for any stack used, such as memory management and architecture. The main purpose is to share specific knowledge acquired over years of study and professional experience with the language, helping those who seek to learn more to have access to content that is palatable to all audiences!

- "Sharing knowledge is a noble attitude that enriches both the person sharing it and the person receiving it, as knowledge multiplies when it is shared."

(back to top)

- Repository tree

  /advanced-c
  ├── /cases
  │   ├── /array_decay
  │   │   ├──/ excalidraw
  │   │   │   ├── README.md
  │   │   │   └── array_decay.c
  │   │   └── README.md
  │   └── /other_cases...
  ├── /images
  ├── .gitattributes
  ├── .gitignore
  ├── LICENSE
  └── README.md

This repository is structured around the 'cases' folder, where all the advanced topics are located. Each of them has different types of applications, which can be separated into subfolders or included within the code, in the .c file, depending on the degree of complexity. All cases have a readme with a diagram made in Excalidraw, in addition to a folder with the .svg image, vectorized and the file to be opened in the software, so that it can be viewed and edited by anyone.

The project does not have a make file because it was created with the intention of each case being a microcode that can be copied and applied in any version of IDE or compiler, with some exceptions, which have specific notes, even in online tools, in order to make the debugging of the cases assertive and open to any level of learning.

(back to top)

- Tech Stack and Environment Settings

Category Technologies and Tools
Programming Languages C
Build System CMake
Version Control Git GitHub
Documentation Doxygen Markdown
Support Tools Docker
Operating System Ubuntu
IDE Neovim

- References

Title Author / Year
Charles Cabergs - Advanced C (Playlist on YouTube)
Charles Cabergs, 2023
The C Programming Language Brian W. Kernighan, Dennis M. Ritchie, 1978
Compilers: Principles, Techniques, and Tools Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Monica S. Lam, 1985
Grokking Algorithms Aditya Bhargava, 2015
Domain-Driven Design: Tackling Complexity in the Heart of Software Eric Evans, 2004
Understanding and Using C Pointers: Core Techniques for Memory Management Richard M. Reese, 2013

(back to top)