Heim >Backend-Entwicklung >C++ >Warum können Sie in C kein Array von Referenzen deklarieren?

Warum können Sie in C kein Array von Referenzen deklarieren?

DDD
DDDOriginal
2024-12-04 17:10:13211Durchsuche

Why Can't You Declare an Array of References in C  ?

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!

Stellungnahme:
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