Maison >développement back-end >C++ >Pourquoi ne pouvons-nous pas créer des tableaux de références en C ?

Pourquoi ne pouvons-nous pas créer des tableaux de références en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-07 21:31:16439parcourir

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

Erreur : tentative de création d'un tableau de références

Lors de la tentative de déclaration d'un tableau de références, tel que :

int a = 1, b = 2, c = 3;
int& arr[] = {a, b, c, 8};

le code ne parvient pas à se compiler.

Explication du C Standard

Selon la norme C §8.3.2/4 :

"Il ne doit y avoir aucune référence à des références, aucun tableau de références, et aucun pointeurs vers des références."

Raison de Interdiction

Les références sont essentiellement des alias vers des objets existants. Ils n'occupent pas de mémoire à eux seuls et n'ont pas d'adresse. Ainsi, créer un tableau de références, qui est essentiellement un tableau d'adresses, n'a pas de sens.

Approche alternative

Pour obtenir une fonctionnalité similaire, vous pouvez créer un classe ou structure qui encapsule une référence, comme démontré dans l'extrait de code fourni :

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};
}

En utilisant cette approche, vous pouvez simuler un tableau de références via des objets contenant des valeurs de référence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn