Maison  >  Article  >  développement back-end  >  Pourquoi ne puis-je pas utiliser une variable non constante pour définir une taille de tableau en C ?

Pourquoi ne puis-je pas utiliser une variable non constante pour définir une taille de tableau en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 09:44:02262parcourir

Why Can't I Use a Non-Constant Variable to Define an Array Size in C  ?

Comprendre les restrictions d'utilisation de Const Int comme taille de tableau

En C , l'utilisation d'un const int comme taille de tableau est soumise à certaines restrictions. Voyons pourquoi ces restrictions existent.

Considérez les scénarios suivants :

  1. Autorisé :

    <code class="cpp">const int size = 2;
    int array[size] = {0}; // Compilation succeeds</code>
  2. Erreur de compilation :

    <code class="cpp">int a = 2;
    const int size = a;
    int array[size] = {0}; // Compilation fails</code>

Raison :

La raison sous-jacente de ces restrictions découle de le concept d'expressions constantes. En C , une expression constante est une constante de compilation qui peut être évaluée lors de la compilation. Dans le premier scénario, la taille est initialisée avec une constante de compilation (c'est-à-dire 2), permettant au compilateur de déterminer la taille du tableau au moment de la compilation. Cette information est cruciale pour l'allocation de mémoire.

Cependant, dans le deuxième scénario, la taille est initialisée avec la valeur de a, qui est mutable et donc non constante. Cela signifie que le compilateur ne peut pas déterminer la taille du tableau avant l'exécution lorsque la valeur de a est connue. Par conséquent, il ne peut pas effectuer d'allocation de mémoire au moment de la compilation pour le tableau, ce qui entraîne une erreur de compilation.

La raison derrière ces limitations est de maintenir la cohérence et la prévisibilité du langage de programmation. Autoriser les expressions non constantes dans les déclarations de taille de tableau introduirait des incertitudes lors de la compilation et entraînerait potentiellement des erreurs d'exécution ou un comportement imprévisible.

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