Video: Data Structures Summary 2024
Als u een array hebt en niet wilt dat de inhoud ervan verandert, kunt u er een constante array van maken. De volgende coderegels, gevonden in het voorbeeld Array05, demonstreren deze benadering:
const int Permanent [5] = {1, 2, 3, 4, 5}; cout << permanent [1] << endl;
Deze array werkt net als elke andere array, behalve dat u de getallen erin niet kunt wijzigen. Als u een regel toevoegt zoals de volgende regel, krijgt u een compileerfout, omdat de compiler weet van constanten:
Permanent [2] = 5;
Dit is de fout die optreedt wanneer u dit probeert in Code:: Blokken:
Fout: toewijzing van alleen-lezen locatie 'Permanent [2]'
Hoe zit het met een constante reeks nonconstants? Kan je dat doen? Welnu, soms - afhankelijk van de compiler. Zo afschuwelijk als de volgende code (gevonden in het voorbeeld van Array06) eruit ziet - en het is geen ANSI-standaard! - je mag dit doen met oudere versies van de gcc-compilers. (Microsoft Visual C ++ en Borland C ++ Builder staan dit niet toe, en de code:: Blocks-compiler presenteert u een foutmelding: ongeldige toewijzing van array-toewijzing.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int AndereLijst [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Met andere woorden, die derde regel zegt: "Vergeet waar OtherList naar verwijst; in plaats daarvan, wijs het naar de eerste array, {1, 2, 3, 4, 5}! "Nu moet je echt geen code als deze schrijven (onthoud, hou dingen eenvoudig en begrijpelijk), dus als je dit soort dingen wilt voorkomen, kun je de array constant maken:
< ! --3 ->const int NonConstant [5] = {1, 2, 3, 4, 5}; const int AndereLijst [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Nu, als de compiler de derde regel bereikt, krijg je een foutmelding:
fout: toewijzing van alleen-lezen variabele 'OtherList'
Maar je merkt misschien dat de manier waarop je de array constant hebt gemaakt op dezelfde manier dat je de elementen ervan constant hebt gemaakt in de code die net voor dit voorbeeld kwam. Oops! Waar gaat dat allemaal over? Blijkt dat er enkele regels zijn.
De volgende lijst beschrijft de regels, in detail, om arrays constant te maken:
-
Als u een array constant wilt maken, kunt u het type voorafgaan met het woord const. Wanneer u dit doet, is de arraynaam constant en zijn de elementen in de array ook constant. U kunt dus geen constante array met niet-constante elementen hebben, noch kunt u een niet-constante array met constante elementen hebben.
-
Het begrip niet -constante array bestaat alleen in gcc en is niet ANSI-standaard.
Als je echt technisch wilt worden, zegt de C ++ ANSI-standaard dat wanneer je het woord const voor een array-declaratie plaatst, je de array niet constant maakt; je zegt dat de array alleen constanten bevat.
Maar als je const op deze manier gebruikt, maken de meeste compilers de array zelf ook constant. Maar dat is prima; mensen zouden geen arraynaam moeten nemen en deze naar iets anders moeten kopiëren. Dat is geen goede programmeerstijl en het vraagt gewoon om bugs - of op zijn minst verwarring - later.