Static est un mot-clé en C et C++. Ainsi, plutôt qu'un terme descriptif général, static a une signification très spécifique lorsqu'il est appliqué à une variable ou à un tableau. Pour ajouter à la confusion, ce terme a trois significations distinctes dans des contextes différents. Pour cette raison, un tableau statique peut être soit fixe, soit dynamique.
Laissez-moi vous expliquer :
La première est spécifique au C++ :
- Un membre de classe statique est une valeur qui n'est pas instanciée avec le constructeur ou supprimée avec le destructeur. Cela signifie que le membre doit être initialisé et maintenu d'une autre manière. Les membres statiques peuvent être des pointeurs initialisés à null et ensuite alloués la première fois qu'un constructeur est appelé. (Oui, ce serait statique et dynamique).
Deux sont héritées de C :
-
Au sein d'une fonction, une variable statique est une variable dont l'emplacement mémoire est conservé entre les appels de fonction. Elle est statique en ce sens qu'elle n'est initialisée qu'une seule fois et qu'elle conserve sa valeur entre les appels de fonction (l'utilisation de la statique rend une fonction non rentable, c'est-à-dire non threadsafe).
-
Les variables statiques déclarées en dehors des fonctions sont des variables globales auxquelles on ne peut accéder qu'à l'intérieur d'un même module (fichier de code source avec tout autre #include).
La question (je pense) que vous vouliez poser est de savoir quelle est la différence entre les tableaux dynamiques et les tableaux fixes ou de compilation. C'est une question plus facile, les tableaux compilés sont déterminés à l'avance (lorsque le programme est compilé) et font partie d'un cadre de pile de fonctions. Ils sont alloués avant l'exécution de la fonction principale. Les tableaux dynamiques sont alloués au moment de l'exécution avec le mot clé "new" (ou la famille malloc du C) et leur taille n'est pas connue à l'avance. Les allocations dynamiques ne sont pas automatiquement nettoyées jusqu'à ce que le programme s'arrête.
1 votes
La statique n'est pas le contraire de la dynamique. Soit le livre que vous utilisez est mauvais, soit vous le sortez de son contexte. Je vais ajouter une nouvelle réponse ci-dessous pour espérer éclaircir ce point.
3 votes
Voir le diagramme dans cette question : stackoverflow.com/a/11698458/1143274 Les tableaux statiques ne sont pas alloués sur la pile ou le tas.
0 votes
*Tableau fixe et tableau dynamique