Avatar ·

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.