shallow copy vs deep copy c