Maison >développement back-end >C++ >Pourquoi ne pouvons-nous pas créer des tableaux de références en 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!