Noch eine kleine Anmerkung zur Laufzeit von Pointer vs. "Normal"

Bei der übergabe "by reference", also per Pointer, ist zu beachten dass man in der Regel nur einen Performance-Gewinn hat, wenn keine sog. primitiven Datentype wie int, char o.ä. übergeben werden. Z.B. ist bei einem 32 Bit System der Pointer auch immer 32 Bit. Daher macht es hierbei keinen unterschied. Zumindest in Bezug auf die Performance.

Allerdings sollten z.B. Strukturen immer "by reference" übergeben werden. Da ansonsten die gesamte Struktur auf den Stack kopiert werden muss. Und das kostet Zeit und Speicherplatz.

Soll eine Funktion aber z.B. mehr als einen Rückgabewert besitzten, so muss dies über Pointer oder in C++ über Referenzen geschene. Mit einem C++ Compiler wäre es auch möglich, eine "const reference" zu übergeben. Dadurch verhindert man ein unbeabsichtiges Verändern eines übergebene Parameters.

In jedem Fall kann z.B. ein Blick in den vom C-compiler erzeugten ASM-Code nicht schaden. Es Test mit einem Parameter "by value" (also "normal") und "by reference" sollte die unterschiede klar machen. Den erzeugten ASM Code kann man sich über einen Command-Line-Switch vom Compiler erzeugen lassen.

Gruß
Andy