c++ - pointeurs - Pourquoi une référence à un tableau ne fonctionne-t-elle pas jusqu'à ce que nous utilisions un pointeur?




reference et pointeurs (2)

En ajoutant à ce qui a déjà été répondu, vous pouvez obtenir une référence à un tableau comme

int a[5];
int (&ref)[5] = a;

Vivre

Cela fonctionne très bien ...

int a[5] = {1,2,3,4,5}, int *p = a;
int *& ref = p;

Mais pourquoi ça ne marche pas?

int a[5] = {1,2,3,4,5};
int*& ref = a;

Les deux a et p sont des pointeurs et ont la même valeur (adresse de a[0] ). Quand je fais référence à un tableau en utilisant un pointeur ( p ), cela fonctionne très bien.

Mais quand je fais référence à ce tableau a[] directement, ça ne marche pas ... Pourquoi?


int*& ref = a;

int* est un type de pointeur, pas un type de tableau. Donc, c'est pourquoi il ne sera pas lié à a , qui a le type int[5] .

Donc, utilisez const

int* const& ref = a;

Cela fonctionne très bien, Parce que le nom du tableau est une constante d'adresse, la référence non-const ne peut pas faire référence à une constante.







reference