alx-low_level_programming

This C Project was done during Full Stack Software Engineering studies at ALX school.

General

Why C programming is awesome

Who invented C

Who are Dennis Ritchie, Brian Kernighan and Linus Torvalds

What happens when you type gcc main.c

What is an entry point

What is main

How to print text using printf, puts and putchar

How to get the size of a specific type using the unary operator sizeof

How to compile using gcc

What is the default program name when compiling with gcc

What is the official C coding style and how to check your code with betty-style

How to find the right header to include in your source code when using a standard library function

How does the main function influence the return value of the program

Variables, if, else, while

What are the arithmetic operators and how to use them

What are the logical operators (sometimes called boolean operators) and how to use them

What the relational operators and how to use them

What values are considered TRUE and FALSE in C

What are the boolean operators and how to use them

How to use the if, if ... else statements

How to use comments

How to declare variables of types char, int, unsigned int

How to assign values to variables

How to print the values of variables of type char, int, unsigned int with printf

How to use the while loop

How to use variables with the while loop

How to print variables using printf

What is the ASCII character set

What is the purpose of the gcc flags -m32 and -m64

Functions, nested loops

What are nested loops and how to use them

What is a function and how do you use functions

What is the difference between a declaration and a definition of a function

What is a prototype

Scope of variables

What are the gcc flags -Wall -Werror -pedantic -Wextra -std=gnu89

What are header files and how to to use them with #include

Debugging

What is debugging

What are some methods of debugging manually

How to read the error messages

Pointers, arrays and strings

What are pointers and how to use them

What are arrays and how to use them

What are the differences between pointers and arrays

How to use strings and how to manipulate them

Scope of variables

What are pointers to pointers and how to use them

What are multidimensional arrays and how to use them

What are the most common C standard library functions to manipulate strings

Recursion

What is recursion

How to implement recursion

In what situations you should implement recursion

In what situations you shouldn’t implement recursion

Static libraries

What is a static library, how does it work, how to create one, and how to use it

Basic usage of ar, ranlib, nm

argc, argv

How to use arguments passed to your program

What are two prototypes of main that you know of, and in which case do you use one or the other

How to use attribute((unused)) or (void) to compile functions with unused variables or parameters

malloc, free

What is the difference between automatic and dynamic allocation

What is malloc and free and how to use them

Why and when use malloc

How to use valgrind to check for memory leak

How to use the exit function

What are the functions calloc and realloc from the standard library and how to use them

Preprocessor

What are macros and how to use them

What are the most common predefined macros

How to include guard your header files

Structures, typedef

What are structures, when, why and how to use them

How to use typedef

Function pointers

What are function pointers and how to use them

What does a function pointer exactly hold

Where does a function pointer point to in the virtual memory

Variadic functions

What are variadic functions

How to use va_start, va_arg and va_end macros

Why and how to use the const type qualifier

Singly linked lists

When and why using linked lists vs arrays

How to build and use linked lists

Bit manipulation

How to manipulate bits and use bitwise operators

File I/O

How to create, open, close, read and write files

What are file descriptors

What are the 3 standard file descriptors, what are their purpose and what are their POSIX names

How to use the I/O system calls open, close, read and write

What are and how to use the flags O_RDONLY, O_WRONLY, O_RDWR

What are file permissions, and how to set them when creating a file with the open system call

What is a system call

What is the difference between a function and a system call

Doubly linked lists

What is a doubly linked list

How to use doubly linked lists

Dynamic libraries

What is a dynamic library, how does it work, how to create one, and how to use it

What is the environment variable $LD_LIBRARY_PATH and how to use it

What are the differences between static and shared libraries

Basic usage nm, ldd, ldconfig

Hash tables

What is a hash function

What makes a good hash function

What is a hash table, how do they work and how to use them

What is a collision and what are the main ways of dealing with collisions in the context of a hash table

What are the advantages and drawbacks of using hash tables

What are the most common use cases of hash tables