https://maciejzalwert.medium.com/c-pointers-and-references-explained-tutorial-with-examples-and-code-17ca67fe3b9