A quick recap on pointers in C++:
EnemySpaceShip* ship; ship; *ship; &ship;
What your function is doing is inserting the new ship at the front of the existing ship list by creating a new ship (
p_ship
), linking the existing ship list (
p_enemies
) to the new ship, then setting the ship list pointer to the new ship.
So yes it should take the address of the enemy ship list which it does. Using & would be taking the address of the address of the enemy ship list.