Maison >développement back-end >C++ >Pourquoi ne puis-je pas initialiser un tableau C avec une longueur variable ?

Pourquoi ne puis-je pas initialiser un tableau C avec une longueur variable ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-15 09:05:11553parcourir

Why Can't I Initialize a C   Array with a Variable Length?

Comprendre l'initialisation d'un tableau avec des littéraux variables ou numériques

Problème :

En C, tenter d'initialiser un tableau avec une longueur variable, telle que int n = 10 ; double tenorData[n] = {1, 2, 3, ...}, entraîne une erreur de compilation. Cependant, l'initialisation avec une longueur fixe, comme double tenorData[10], réussit. Pourquoi cela se produit-il ?

Réponse :

En C , les tableaux de taille variable ne sont pas autorisés. Bien que les extensions de certains compilateurs (par exemple G ) les autorisent, elles restent illégales selon la norme. Pour créer des tableaux de longueurs variables en C , vous pouvez soit :

  • Allocation dynamique de mémoire : Allouez la mémoire manuellement à l'aide de pointeurs, mais n'oubliez pas de la libérer plus tard.
  • Utilisez des conteneurs standard : Utilisez des conteneurs comme std::vector pour gérer la mémoire dynamique gestion.

Si vous avez toujours besoin d'un tableau, envisagez d'utiliser une valeur constante au lieu d'une variable :

  • Constante : Déclarez la taille du tableau comme une constante, telle que const int n = 10 ; double a[n];, car les constantes sont évaluées au moment de la compilation.
  • Constexpr (C 11 ): Pour les valeurs déterminées par les fonctions, utilisez constexpr, qui évalue également les expressions au moment de la compilation.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn