Heim >Backend-Entwicklung >C++ >Warum können wir in C keine Arrays von Referenzen erstellen?

Warum können wir in C keine Arrays von Referenzen erstellen?

Susan Sarandon
Susan SarandonOriginal
2024-12-07 21:31:16439Durchsuche

Why Can't We Create Arrays of References in C  ?

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!

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