Dynamic memory allocation in C allows programs to allocate memory at runtime using functions such as `malloc()`, `calloc()`, `realloc()`, and `free()`. This enables the creation of data structures whose size can change during the execution of a program.