Video: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie 2025
Hvis du har en matrix, og du ikke vil have indholdet til at ændre, kan du gøre det til et konstant array. Følgende kodelinjer, der findes i Array05-eksemplet, viser denne fremgangsmåde:
const int Permanent [5] = {1, 2, 3, 4, 5}; cout << permanent [1] << endl;
Dette array fungerer som et andet array, bortset fra at du ikke kan ændre tallene inde i det. Hvis du tilføjer en linje som den følgende linje, får du en compilerfejl, fordi kompilatoren er opmærksom på konstanter:
Permanent [2] = 5;
Her er den fejl, du får, når du prøver dette i Kode:: Blokke:
Fejl: Tildeling af skrivebeskyttet placering 'Permanent [2]'
Hvad med et konstant udvalg af nonconstants? Kan du gøre det? Nå, nogle gange - afhængigt af kompilatoren. Så forfærdeligt som den følgende kode (fundet i Array06-eksemplet) ser ud - og det er ikke ANSI-standard! - Det er tilladt at gøre dette med ældre versioner af gcc-kompilatorerne. (Microsoft Visual C ++ og Borland C ++ Builder tillader det ikke, og Code:: Blocks compiler præsenterer dig med en fejl: Fejlmeddelelse om ugyldig array-tildeling.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Med andre ord siger den tredje linje: "Glem hvad OtherList peger på; i stedet gør det til det første array, {1, 2, 3, 4, 5}! "Nu skal du virkelig ikke skrive kode som denne (husk, hold tingene simple og forståelige), så hvis du vil forhindre denne slags ting, kan du gøre arrayet konstant:
< ! --3 ->const int NonConstant [5] = {1, 2, 3, 4, 5}; const int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Nu, når kompilatoren kommer til den tredje linje, giver den dig en fejl:
fejl: tildeling af skrivebeskyttet variabel 'OtherList'
Men du bemærker måske, at måden du lavede arrayet konstant var på samme måde som du lavede sine elementer konstant i den kode, der kom lige før dette eksempel. Ups! Hvad handler det om? Udviser der er nogle regler.
Følgende liste beskriver reglerne i detaljer for at lave arrayer konstant:
-
Hvis du vil lave en matrix konstant, kan du forudgå sin type med word const. Når du gør det, er arraynavnet konstant, og elementerne inde i arrayet er også konstant. Således kan du ikke have et konstant array med nonconstant elementer, og du kan heller ikke have et uafbrudt array med konstante elementer.
-
Begrebet nonconstant array findes kun i gcc og er ikke ANSI-standard.
Hvis du virkelig ønsker at blive teknisk, siger C ++ ANSI-standarden, at når du sætter ordet const foran en array-erklæring, laver du ikke arrayet konstant; du siger at arrayet kun indeholder konstanter.
Men når du bruger const på denne måde, gør de fleste kompilatorer også arrayet selv konstant. Men det er fint; folk bør ikke tage et array navn og kopiere det til noget andet. Det er ikke en god programmeringsstil, og det beder bare om fejl - eller i det mindste forvirring - senere.