Heim >Backend-Entwicklung >C++ >Warum können wir in C keine Arrays von Referenzen erstellen?
Fehler: Versuch, ein Array von Referenzen zu erstellen
Beim Versuch, ein Array von Referenzen zu deklarieren, wie zum Beispiel:
int a = 1, b = 2, c = 3; int& arr[] = {a, b, c, 8};
Der Code kann nicht kompiliert werden.
Erklärung aus dem C Standard
Gemäß dem C-Standard §8.3.2/4:
„Es darf keine Verweise auf Verweise geben, keine Arrays von Verweisen und nein Hinweise auf Referenzen.“
Grund für Verbot
Referenzen sind im Wesentlichen Aliase auf vorhandene Objekte. Sie belegen keinen eigenen Speicher und haben keine Adresse. Daher macht es keinen Sinn, ein Array von Referenzen zu erstellen, bei dem es sich im Wesentlichen um ein Array von Adressen handelt.
Alternativer Ansatz
Um eine ähnliche Funktionalität zu erreichen, können Sie eine erstellen Klasse oder Struktur, die eine Referenz kapselt, wie im bereitgestellten Codeausschnitt 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}; }
Mit diesem Ansatz können Sie simulieren ein Array von Referenzen durch Objekte, die Referenzwerte enthalten.
Das obige ist der detaillierte Inhalt vonWarum können wir in C keine Arrays von Referenzen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!