C had pointers to pointers because you could do that addressing mode on the PDP-11.
In the old days of V7, I could look at a line of C and tell you exactly which PDP-11 instructions the compiler would emit. The mapping between C and PDP-11 assembly is very obvious. When they started porting C off onto other architectures, C looked much more powerful than originally thought by PDP-11 hackers, because we could do all those things in one line of PDP-11 Macro assembly.
For example, copying strings char-by-char with pointers, with auto-increment. Blindingly obvious that it boils down to one PDP-11 instruction, with two registers, indirect auto-inc.
I worked on PDP-11 based testers while in college. You knew it was going to be a bad day when the tape reader ate your diagnostics tape.
8^)