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