But why does passing a 'pointer to a pointer to a char' work in the above but passing a normal char pointer doesn't.
The value you want to change is the char pointer, not a char, and so you need to pass a pointer to it