https://softwareengineering.stackexchange.com/questions/252023/why-does-c-use-the-asterisk-for-pointers