This means that the function can change the value of the pointer in the caller.
i.e.
myName* foo; /* ToDo - initialise foo in some way*/ fun(foo); /* foo might now point to something else*/
I view this as an anti-pattern. The reason is that people reading your code do not expect foo to change this way, because the call syntax is indistinguishable from the more normal function void anotherFun(int * name){...} .
The stability of such a code may be affected. Therefore, I recommend using void fun(int ** name){...} . Then the call syntax becomes fun(&foo) , which tells the user of the function that foo can be changed.
source share