Die Möglichkeit gibt es: Einfach in der Funktion nicht auf die Datenfelder schreibend zugreifen.
Eine andere Variante gibt es nicht, sollte eigentlich logisch sein ...
Nur in C++ gibt es einen protected Zusatz, der bezieht sich aber wiederum nur auf Funktionen, die nicht auf protected Variablen zugreifen dürfen.
Mit anderen Worten schaut die Sache letztgültig so aus (

*seufz* es ist so, nicht eine Bemerkung in Deine Richtung):
1. Struktur allozieren
2. Strukturfelder initialisieren
3. Struktur in Arbeitsbereich (Strukturkopie) kopieren
4. Funktionsaufruf mit den bösen Veränderungen machen mittels Übergabe eines Adresszeigers auf die Strukturkopie
5. Glücklich sein, daß die Originalstruktur so bestehen bleibt wie sie vor dem Aufruf der Funktion ausgesehen hat, sprich die Weiterverwendung der ursprünglichen Werte geht durch das Kopieren und Verwenden der Kopie anstatt des Originals in Ordnung
mfg
Kikakater