Wo sollten Sie in C den Standardwert für einen Funktionsparameter definieren: nur in der Deklaration, nur in der Definition oder an beiden Stellen?
Die Antwort ist, dass der Standardparameterwert in der Deklaration angegeben werden muss, nicht in der Definition. Die Deklaration ist der einzige für den Aufrufer sichtbare Teil der Funktion und muss daher alle Informationen enthalten, die für den korrekten Aufruf der Funktion erforderlich sind.
Mit anderen Worten: Der Standardparameterwert ist Teil des Funktionstyps Unterschrift. Es bestimmt den Typ des Parameters und ob er einen Standardwert hat. Wenn der Standardparameterwert in der Deklaration weggelassen wird, geht der Compiler davon aus, dass der Parameter keinen Standardwert hat, und generiert einen Fehler, wenn er nicht vom Aufrufer bereitgestellt wird.
Zum Beispiel die folgende Funktion Die Deklaration definiert eine Funktion, die zwei ganzzahlige Parameter x und y mit den Standardwerten 0 bzw. 1 annimmt:
int foo(int x = 0, int y = 1);
Der folgende Funktionsaufruf ruft die Funktion foo mit dem Standardwert auf Werte für beide Parameter:
int result = foo();
Der folgende Funktionsaufruf ruft die foo-Funktion mit einem nicht standardmäßigen Wert für den x-Parameter auf:
int result = foo(5);
Beachten Sie, dass der Standardparameterwert für y wird im zweiten Funktionsaufruf weiterhin verwendet, obwohl der x-Parameter explizit angegeben wird. Dies liegt daran, dass der Standardparameterwert Teil der Typsignatur der Funktion ist und es nicht möglich ist, ihn im Funktionsaufruf zu überschreiben.
Es ist möglich, den Standardparameterwert in der Funktionsdefinition zu definieren, aber dies wird nicht empfohlen. Die Definition ist nur für den Compiler sichtbar und hat keinen Einfluss auf die Typsignatur der Funktion. Daher kann die Pflege verwirrend sein und zu Fehlern führen, wenn der Standardparameterwert in der Deklaration, aber nicht in der Definition geändert wird.
Das obige ist der detaillierte Inhalt vonWo sollten Standardparameterwerte in C definiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!