Tailles de tableau initialisées par variable : un paradoxe des expressions constantes C
En C, utiliser un const int pour déclarer la taille d'un tableau peut être à la fois permis et interdit. Considérez les exemples suivants :
<code class="cpp">const int size = 2; int array[size] = {0}; // Valid</code>
<code class="cpp">int a = 2; const int size = a; int array[size] = {0}; // Compile error</code>
La différence cruciale réside dans l'initialisation de la taille. Le premier exemple utilise une expression constante (2) pour définir la taille au moment de la compilation. Cela permet au compilateur de réserver de la mémoire pour le tableau lors de la compilation.
En revanche, le deuxième exemple utilise une variable (a) pour initialiser la taille. Il ne s'agit pas d'une expression constante, le compilateur ne peut donc pas déterminer la taille du tableau avant l'exécution. Par conséquent, l'allocation de mémoire ne peut pas être effectuée au moment de la compilation, entraînant une erreur de compilation.
Cette restriction n'est pas purement technique. Le comité C a intentionnellement interdit les tailles de tableaux initialisées par des variables pour garantir la stabilité et l'efficacité du code. Cela élimine la possibilité de modifier dynamiquement la taille du tableau, ce qui pourrait entraîner un comportement indéfini et une corruption de la mémoire.
En limitant la taille des tableaux à des expressions constantes, les développeurs C sont obligés de déterminer la taille de leurs tableaux lors de la compilation. Cela élimine l’incertitude et améliore la fiabilité du code. Bien que cette restriction puisse sembler trop stricte, elle contribue en fin de compte à la sécurité et à la prévisibilité des programmes C.
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!