Główne pytanie nie dotyczy wydajności, ale semantyki i tego, czy funkcja modyfikuje dane w strukturze.
Jeśli twoja funkcja modyfikuje strukturę, podanie wskaźnika pozwoli rozmówcy zobaczyć zmienione dane w strukturze. W takim przypadku przekazanie kopii będzie prawdopodobnie błędne, ponieważ twoja funkcja zmodyfikuje kopię, która jest wtedy (prawdopodobnie) odrzucona. Oczywiście możliwe jest, że twoja funkcja modyfikuje dane, ale nie chcesz modyfikacji, w którym to przypadku kopia jest właściwa, aby chronić oryginalne wartości przed zmianami.
Jeśli twoja funkcja nie modyfikuje struktury, nie ma powodu, aby kopiować wartości, ponieważ będą one odczytywane.
Jeśli nie podoba ci się pomysł przekazywania wskaźników do struktur, powinieneś zdobyć trochę praktyki, ponieważ jest to typowy sposób radzenia sobie ze strukturami w C i C++.
Jeśli chodzi o wydajność, to więcej pracy, aby skopiować strukturę, ale jest to dość niewielkie w schemacie rzeczy. Najpierw pamiętaj o semantyce kodu.
Dodam, że wskaźniki bez wartości zerowej są jeszcze bardziej irytujące. – tloach
Co to są wskaźniki inne niż 0? – Motti
int * ohoh = new int; usunąć ohoh; cout << ohoh; // wskaźnik zerowy zerowy – MattyT