Read it from right to left. A*& b says that b is a reference to an object that points to an A. Why is this useful? It allows you to directly modify the pointer that is being passed into the function. Whatever happens to b inside that function will be visible when the function returns.