Qu'est-ce que le decay d'un tableau en pointeur (array-to-pointer decay) en C++ ?
Bonjour, collègues ! Je viens de commencer à apprendre le C++ et j'ai rencontré un comportement très étrange des tableaux. Quand je passe un tableau à une fonction et que j'essaie de connaître sa taille avec `sizeof`, j'obtiens un résultat différent de ce que j'attends.
Voici un exemple :
```cpp
#include
void printSize(int arr[]) {
std::cout << "À l'intérieur de la fonction : " << sizeof(arr) << " octets" << std::endl;
}
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
std::cout << "Dans main : " << sizeof(numbers) << " octets" << std::endl; // Affiche 20 (5 * 4)
printSize(numbers); // Affiche 8 (taille d'un pointeur) sur un système 64 bits
return 0;
}
```
Je m'attendais à ce que `sizeof(arr)` à l'intérieur de la fonction renvoie également 20, mais j'obtiens 8. Pourquoi cela se produit-il ? J'ai entendu le terme "array decay" (décroissance de tableau), mais je ne comprends pas vraiment ce que cela signifie.