Tableaux de longueur variable en C malgré l'exigence de limite de tableau constante
En C, il est indiqué que la limite du tableau doit être une expression constante. Cependant, dans certains scénarios de code, il semble que cette règle soit violée sans provoquer d'erreurs. Prenons l'exemple suivant :
#include <iostream> using namespace std; int main(){ int n=10; int a[n]; for (int i=0; i<n; i++) { a[i]=i+1; cout<<a[i]<<endl; } return 0; }
Conformément aux manuels, ce code devrait générer une erreur puisque n n'est pas une expression constante. Étonnamment, il s'exécute parfaitement dans Xcode4 sous Mac. Qu'est-ce qui explique cette apparente contradiction ?
La réponse réside dans une fonctionnalité C99 appelée matrices de longueur variable (VLA). Bien qu'ils soient principalement utilisés en C, certains compilateurs prennent également en charge les VLA en C. Dans ce contexte, int a[n] est un VLA qui alloue de l'espace sur la pile semblable à int a[10].
Par conséquent, le code ci-dessus utilise un VLA de longueur variable n. Cette fonctionnalité permet la création de tableaux avec des tailles déterminées dynamiquement, même si la limite du tableau n'est techniquement pas une expression constante.
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!