- Funktionsaufruf
- Parameteruebertragung
- Überladen von Funktionen
- Überladen von Operatoren
- Beschreibung der Aussenfunktionen
- Exportieren der Funktionen
- Ereignisbearbeiter
Parameterübertragung
Es gibt zwei Verfahren, durch die Computersprache das Argument dem Subprogramm (der Funktion) übertragen kann. Das erste Verfahren - Parameterübertragung nach der Bedeutung. Dieses Verfahren kopiert den Wert von Argument in den formellen Funktionsparameter. Darum haben verschiedene Änderungen dieses Paramerters keinen Einfluss auf das entsprechende Aufrufsargument.
//+------------------------------------------------------------------+
|
Zweites Verfahren - Parameterübertragung durch Referenz. In diesem Fall wird der Verweis auf Parameter (nicht aber auf seine Bedeutung_ dem Funktionsparameter übertragen. Innerhalb der Funktion wird der Verweis verwendet, um zum tatsaechlichen Parameter, angegebenen im Aufruf, zu greifen. Das bedeutet, dass Parameteränderungen das Argument beeinflussen werden, das für Funktionsaufruf verwendet wurde.
//+------------------------------------------------------------------+
|
MQL5 verwendet beide Verfahren, mit Ausnahme von: Felder, Variablen des Typs Strukturen und Klassenobjekte werden immer durch Verweis übertragen. Um Änderungen der tatsaechlichen Parameter auszuschliessen (Argumente, übertragen beim Funktionsaufruf), muss man Zugriffsspezifikator const verwenden.Beim Versuch, Inhalt der Variable zu verändern, die mit dem Spezifikator const erklärt wurde, generiert der Compiler einen Fehler.
Bemerkung
Es muss behalten werden, dass Parameter der Funktion umgekehrt übertragen werden, d.h. am Anfang wird der letzte Patameter berechnet und übertragen, dann vorletzte usw. Am letzten wird der Parameter berechnet und übertragen, der am ersten nach den Klammern steht.
Beispiel:
void OnStart()
|
Beim ersten Aufruf im angeführten Beispiel nimmt die Variable i am Anfang an der Zahlenkonkatenanz teil.
"Erster Aufruf(i="+string(i)+")" |
Dabei verändert sich ihr Wert nicht. Dann beteiligt sich die Variable i an der Berechnung des Elementes vom Feld a[i++], d.h. nach der Entnahme des i-Elementes des Feldes wird die Variable i inkrementiert. Und erst danach wird der erste Parameter mit dem veränderten Wert der Variable i berechnet.
Im zweiten Aufruf bei der Berechnung aller drei Parameter wird derselbe Wert i verwendet, der beim ersten Funktionsaufruf verändert wurde, und erst nach der Berechnung des ersten Parameters verändert sich die Variable i wieder.
Sehen Sie auch
Sichtbereich und Lebensdauer der Variablen, überladen,Virtuelle Funktionen, Polymorphismus