Maison > développement back-end > C++ > Pourquoi ne pouvez-vous pas déclarer un tableau de références en C ?

Pourquoi ne pouvez-vous pas déclarer un tableau de références en C ?

DDD
Libérer: 2024-12-04 17:10:13
original
207 Les gens l'ont consulté

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

Tableaux de références en C : expliqués avec la référence standard

Considérez le code suivant :

int a = 1, b = 2, c = 3;
int& arr[] = {a,b,c,8};
Copier après la connexion

Ce code ne compile pas. Pourquoi? Explorons la norme C pour trouver la réponse.

Conseils sur la norme C

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 pointeur vers références."

Raisonnement derrière la restriction

Cette restriction est en place car les références ne sont pas des objets au sens traditionnel. Ce sont essentiellement des alias d’objets et n’occupent pas de mémoire, ils n’ont donc pas d’adresse. Par conséquent, déclarer un tableau de références n'a pas de sens puisqu'il n'y a pas de tableau d'objets auquel faire référence.

Approche alternative

Si vous avez besoin de simuler un tableau de références , vous pouvez créer une classe qui encapsule une référence, comme le montre l'exemple suivant :

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};
}
Copier après la connexion

Cette approche simule essentiellement un tableau de références en créant un tableau d’objets de la classe cintref. Chaque objet contient une référence à la variable entière correspondante.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal