Um Parameter zu übergeben, gibt es drei Möglichkeiten.
Übergabe per Wert
Bei der Übergabe per Wert wird nur der Wert übergeben. Dies ist das Pendant zur VAL-Parameterübergabe in Oberon. In der aufgerufenen Funktion wird für den übergebenen Wert extra eine neue Variable kreiert. Die Variable in der aufrufenden Funktion bleibt unberührt.
Übergabe per Pointer
Dies ist eigentlich nur ein Name für eine spezielle Art der Übergabe per Wert. Hier wird die Adresse einer Variable der aufrufenden Funktion in einer neuen Variable innerhalb der aufgerufenen Funktion gespeichert. Als zu übergebender Parameter steht beispielsweise &Wert (eine Adresse auf einen Integer) und als empfangene Variable steht int *value. Value ist nun nicht der Wert selbst, sondern der Zeiger auf den Wert. Dadurch muss, um auf den Wert zuzugreifen dieser Pointer immer dereferenziert werden. Somit bewirkt eine Änderung innerhalb der aufgerufenen Funktion auch eine Änderung in der aufrufenden Funktion. Dies ist unter C die einzige Möglichkeit, auf eine Variable ausserhalb einer aufgerufenen Funktion zuzugreifen. Sie erweist sich manchmal als sehr umständlich.
Achtung! Der Name Übergabe durch Pointer ist etwas verwirrend, man keine Pointer direkt übergeben werden. Beispielsweise hat die Übergabe des integer-Pointers ptr und der Empfang per int *pointer zur Folge, dass der Pointer zwar benutzt werden kann, in der aufrufenden Funktion jedoch ptr unberührt bleibt.
Übergabe per Referenz
Diese Art der Parameterübergabe ist erst in C++ verfügbar. Diese Art ist das Pendant dur VAR-Parameterübergabe in Oberon. Sie erlaubt es, die Variable selbst zu übergeben. Dadurch bewirkt eine Änderung innerhalb der aufgerufenen Funktion auch eine Änderung in der aufrufenden Funktion. Um eine Variable per Referenz zu übergeben, ruft man eine Funktion beispielsweise mit dem Parameter Wert auf. In der Funktion wird die Variable durch int &Wert übernommen.