[c] Why use double indirection? or Why use pointers to pointers?