Bonjour,
Je ne comprends pas pourquoi le &r ne contient pas une adresse ;
c'est è dire pourquoi on utilise pas int & r = *tab;Merci d'avance.Code:
1
2
3 int & r = *tab; r = 1024;
Version imprimable
Bonjour,
Je ne comprends pas pourquoi le &r ne contient pas une adresse ;
c'est è dire pourquoi on utilise pas int & r = *tab;Merci d'avance.Code:
1
2
3 int & r = *tab; r = 1024;
Bonsoir,
où est la question ?
r est une référence, et un entier, pourquoi il devrait contenir une adresse ?
Sais-tu ce qu'est une référence ?
Salut,
De manière générale, un tableau est assimilable à un pointeur vers pointeur vers son premier élément.
Autrement dit, si tu as un code proche de
tu peux tab comme s'il s'agissait de l'adresse à laquelle se trouve tab[0].Code:int tab[10];
A partir de là, lorsque tu écris le code
tu déclares une référence sur un entier qui fait référence au premier élément du tableau (ou si tu préfères un alias de l'entier en question).Code:int & r = *tab;
Du coup, lorsque tu vas modifier r, tu modifieras en réalité la valeur de tab[0]
Autrement dit, le code
est strictement équivalent au codeCode:
1
2 int & r = *tab; r = 1024;
et au codeCode:tab[0]= 1024;
(fais juste attention avec ce dernier code au fait que tu ne pourras accéder de la sorte qu'au premier élément du tableau, à moins de recourir à l'arithmétique des pointeurs ;))Code:(*tab)=1024;
Merci beaucoup pour cette réponse détaillée.