Heim >Backend-Entwicklung >C++ >Warum können Sie in C kein Array von Referenzen deklarieren?
Arrays von Referenzen in C: Erklärt mit Standardreferenz
Betrachten Sie den folgenden Code:
int a = 1, b = 2, c = 3; int& arr[] = {a,b,c,8};
Dieser Code kompiliert nicht. Warum? Erkunden wir den C-Standard, um die Antwort zu finden.
C-Standard-Leitfaden
Gemäß dem C-Standard §8.3.2/4:
" Es dürfen keine Referenzen auf Referenzen, keine Referenzarrays und keine Zeiger darauf vorhanden sein Referenzen.“
Begründung hinter der Einschränkung
Diese Einschränkung besteht, weil Referenzen keine Objekte im herkömmlichen Sinne sind. Sie sind im Wesentlichen Aliase für Objekte und belegen keinen Speicher, daher haben sie keine Adressen. Folglich macht die Deklaration eines Arrays von Referenzen wenig Sinn, da es kein Array von Objekten gibt, auf das verwiesen werden kann.
Alternativer Ansatz
Wenn Sie ein Array von Referenzen simulieren müssen können Sie eine Klasse erstellen, die eine Referenz kapselt, wie im folgenden Beispiel gezeigt:
struct cintref { cintref(const int & ref) : ref(ref) {} operator const int &() { return ref; } private: const int & ref; void operator=(const cintref &); }; int main() { int a=1,b=2,c=3; cintref arr[] = {a,b,c,8}; }
Dieser Ansatz simuliert im Wesentlichen ein Array von Referenzen durch Erstellen eines Arrays von Objekten der Klasse cintref. Jedes Objekt enthält einen Verweis auf die entsprechende Ganzzahlvariable.
Das obige ist der detaillierte Inhalt vonWarum können Sie in C kein Array von Referenzen deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!