The "how to implement a hash table" article https://benhoyt.com/writings/hash-table-in-c/ was really helpful for me. I thought that hash tables were something that were basically impossible to make in C, but this showed that it was simpler.
Arrays are hash tables. You can implement a very simple hash table from a tutorial, but can you implement a sophisticated one? What about a concurrent hash table?
> I thought that hash tables were something that were basically impossible to make in C,
Why would you believe this in the first place?
You can also look at how CPython implements hash tables in C. The implementation is surprisingly approachable for a real world one.