Maison > développement back-end > C++ > Les tableaux de longueur variable (VLA) existent-ils en C ?

Les tableaux de longueur variable (VLA) existent-ils en C ?

Mary-Kate Olsen
Libérer: 2024-11-16 13:11:03
original
783 Les gens l'ont consulté

Do Variable Length Arrays (VLAs) Exist in C  ?

Tableaux de longueur variable en C

Malgré l'hypothèse courante selon laquelle C ne prend pas en charge les tableaux de longueur variable (VLA), il existe des moyens d'y parvenir fonctionnalité similaire. Cependant, il est important de noter que l'utilisation de ces méthodes ne garantit pas la compatibilité entre tous les compilateurs.

Explication du code

L'exemple de code que vous avez fourni se compile et fonctionne parce que :

  • Compatibilité GCC : GCC version 4.7 et versions ultérieures prennent en charge les VLA en tant que extension. Cela signifie que lorsque votre code est compilé avec GCC, il interprète int a[n]; en tant que VLA.
  • Allocation automatique de stockage : Les VLA sont stockés sur la pile, qui est un type de mémoire alloué automatiquement au démarrage d'une fonction. Ainsi, dans votre code, a est alloué sur la pile en fonction de la valeur de n saisie par l'utilisateur.

Support standard

Il est important de noter que le standard C n'exige pas que les compilateurs prennent en charge les VLA. Par conséquent, le code qui utilise les VLA peut ne pas être portable sur différents compilateurs ou plates-formes.

Proposition échouée pour C 14 et C 17

Il a été initialement proposé que les VLA soient inclus dans la norme C 14. Cependant, la proposition n’a pas été votée et les VLA n’ont pas été ajoutés au texte. La proposition n'a pas non plus été acceptée pour inclusion dans C 17.

Conclusion

Bien que les VLA ne fassent pas officiellement partie de la norme C, ils peuvent être utilisés comme une extension dans certains compilateurs, comme GCC. Cependant, il est crucial d'être conscient des problèmes potentiels de portabilité et d'utiliser les VLA avec prudence, en particulier dans le code multiplateforme.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal