Construire des tableaux constants en C ++

Si vous avez un tableau et vous ne voulez pas changer son contenu, vous pouvez faire une constante tableau. Les lignes de code suivantes, trouvés dans le Array05 par exemple, démontrer cette approche:

const int permanent [5] = {1, 2, 3, 4, 5} -cout lt; lt; Permanent [1] lt; lt; endl-

Ce tableau fonctionne comme tout autre tableau, sauf que vous ne pouvez pas changer les numéros à l'intérieur. Si vous ajoutez une ligne à la ligne suivante, vous obtenez une erreur du compilateur, parce que le compilateur est conscient de constantes:

Permanent [2] = 5

Voici l'erreur que vous obtenez lorsque vous essayez ceci dans Code :: Blocks:

erreur: cession de lecture seule localisation 'permanent [2] »



Qu'en est-il un réseau constant de nonconstants? Peux-tu faire ça? Eh bien, parfois - selon le compilateur. Aussi horrible que le code suivant (qui se trouve dans le Array06 exemple) ressemble - et il est pas la norme ANSI! - Vous êtes autorisé à le faire avec les anciennes versions de gcc les compilateurs. (Microsoft Visual C ++ et Borland C ++ Builder ne le permettent pas, et le Code :: Blocks compilateur vous présente avec une erreur: affectation de tableau invalide Message d'erreur.)

int non constante [5] = {1, 2, 3, 4, 5} -int autreliste [5] = {10, 11, 12, 13, 14} = NonConstant- -OtherList

En d'autres termes, ce troisième ligne dit, “ Oubliez ce que Autreliste souligne To-lieu, faire pointer vers le premier tableau, {1 2 3 4 5}!” Maintenant, c'est à votre tour vraiment ne devrait pas écrire du code comme ceci (rappelez-vous, garder les choses simples et compréhensibles), donc si vous voulez éviter ce genre de chose, vous pouvez faire la constante de tableau:

const int non constante [5] = {1, 2, 3, 4, 5} -const autreliste int [5] = {10, 11, 12, 13, 14} = NonConstant- -OtherList

Maintenant, lorsque le compilateur arrive à la troisième ligne, il vous donne une erreur:

erreur: cession de variable en lecture seule 'autreliste'

Mais vous pouvez remarquer que la façon dont vous avez fait la constante tableau était de la même manière que vous avez fait de ses éléments constants dans le code qui est venu juste avant cet exemple. Oops! Qu'est-ce qui est tout au sujet? Tours dehors il ya quelques règles.

La liste suivante décrit les règles, dans le détail, pour la fabrication de tableaux constante:

  • Si vous souhaitez effectuer une constante tableau, vous pouvez faire précéder son type avec le mot const. Lorsque vous procédez ainsi, le nom du tableau est constante, et les éléments à l'intérieur du tableau sont aussi constant. Ainsi vous ne pouvez pas avoir une constante tableau avec des éléments non constants, et vous ne pouvez avoir un tableau non constante avec des éléments constants.

  • La notion d'un tableau non constante existe seulement dans gcc et ne sont pas la norme ANSI.

Si vous voulez vraiment obtenir technique, la norme C ++ ANSI dit que quand vous mettez le mot const en face d'une déclaration de tableau, vous ne faites pas le tableau constant- vous dites que le tableau ne contient que des constantes.

Pourtant, lorsque vous utilisez const De cette façon, la plupart des compilateurs font aussi le tableau lui-même constante. Mais cela a des gens Fine- ne devraient pas prendre un nom de tableau et de le copier à autre chose. Cela ne veut pas bon style de programmation, et il est juste de demander pour les bugs - ou, à tout le moins, de la confusion - plus tard.


» » » » Construire des tableaux constants en C ++