Heim > Backend-Entwicklung > C++ > Wie kann ich Standardwerte mit Pass-by-Reference-Parametern in C verwenden?

Wie kann ich Standardwerte mit Pass-by-Reference-Parametern in C verwenden?

DDD
Freigeben: 2024-11-27 22:44:15
Original
560 Leute haben es durchsucht

How Can I Use Default Values with Pass-by-Reference Parameters in C  ?

Übergabe von Parametern als Referenz mit Standardwerten in C

In C können Funktionsparameter sowohl als Wert als auch als Referenz übergeben werden. Bei der Wertübergabe wird eine Kopie des Parameterwerts erstellt und diese Kopie an die Funktion übergeben. Bei der Übergabe per Referenz arbeitet die Funktion direkt an der Speicheradresse des Parameters.

Bei der Übergabe eines Parameters per Referenz ist es nicht möglich, einen Standardwert auf die gleiche Weise anzugeben wie für übergebene Parameter Wert. Dies liegt daran, dass ein Standardwert initialisiert wird, wenn die Funktion definiert wird, ein Referenzparameter jedoch nur initialisiert wird, wenn die Funktion mit übergebenen Argumenten aufgerufen wird.

Betrachten Sie zur Veranschaulichung die folgende Funktionsdeklaration:

virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Nach dem Login kopieren

Hier wird der Parameter „State“ als Referenz auf einen ULONG und der Parameter „sequence“ als boolescher Wert deklariert. Allerdings führt die Zuweisung eines Standardwerts zu „State“ („= 0“) zu einem Fehler:

error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Nach dem Login kopieren

Dieser Fehler tritt auf, weil eine nicht konstante Referenz nicht an einen Nicht-L-Wert gebunden werden kann (d. h. a temporärer Ausdruck). Es ist jedoch möglich, einen Standardwert für eine konstante Referenz anzugeben:

virtual const ULONG Write(const ULONG &State = 0, bool sequence = true);
Nach dem Login kopieren

In diesem Fall ist der Parameter „State“ eine konstante Referenz auf einen ULONG und der Standardwert („= 0“) ist ein konstanter Wert. Dadurch kann die Funktion aufgerufen werden, ohne dass ein Wert für „State“ angegeben werden muss.

Eine Ausnahme von dieser Regel ist die Verwendung einer statischen Variablen als Standardwert für eine nicht konstante Referenz:

static int AVAL = 1;

void f(int &x = AVAL) {
   // stuff
} 

int main() {
     f();       // equivalent to f(AVAL);
}
Nach dem Login kopieren

In diesem Beispiel ist der Parameter „x“ eine nicht konstante Referenz auf einen int und der Standardwert („AVAL“) ist eine statische Variable. Dadurch kann die Funktion aufgerufen werden, ohne dass für „x“ ein Wert angegeben werden muss. Diese Technik ist jedoch von begrenztem praktischen Nutzen.

Das obige ist der detaillierte Inhalt vonWie kann ich Standardwerte mit Pass-by-Reference-Parametern in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage