Video: Section, Week 6 2024
Hvis du har en matrise og du ikke vil at innholdet skal endres, kan du gjøre det til en konstant rekkefølge. Følgende kodelinjer, funnet i Array05-eksemplet, demonstrerer denne tilnærmingen:
const int Permanent [5] = {1, 2, 3, 4, 5}; cout << permanent [1] << endl;
Dette arrayet fungerer som et annet array, bortsett fra at du ikke kan endre tallene i den. Hvis du legger til en linje som følgende linje, får du en kompilatorfeil, fordi kompilatoren er klar over konstanter:
Permanent [2] = 5;
Her er feilen du får når du prøver dette i Kode:: Blokker:
Feil: Tilordning av skrivebeskyttet plassering. Permanent [2] '
Hva med en konstant rekke ikke-konstant? Kan du gjøre det? Vel, noen ganger - avhengig av kompilatoren. Så fryktelig som den følgende koden (funnet i Array06-eksemplet) ser ut - og det er ikke ANSI-standard! - du har lov til å gjøre dette med eldre versjoner av gcc-kompilatørene. (Microsoft Visual C ++ og Borland C ++ Builder tillater ikke det, og Kode:: Blokker kompilator presenterer deg med en feil: Feilmelding om feil oppgavetilordning.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Med andre ord sier den tredje linjen: "Glem hva OtherList peker på; I stedet gjør det punkt til den første gruppen, {1, 2, 3, 4, 5}! "Nå, du virkelig burde ikke skrive kode som dette (husk, hold ting enkelt og forståelig), så hvis du vil hindre denne typen ting, kan du gjøre arrayet konstant:
< ! --3 ->const int NonConstant [5] = {1, 2, 3, 4, 5}; const int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Nå, når kompilatoren kommer til den tredje linjen, gir den deg en feil:
feil: tildeling av skrivebeskyttet variabel 'OtherList'
Men du kan merke at måten du gjorde arrayet konstant var på samme måte som du gjorde elementene konstant i koden som kom like før dette eksemplet. Oops! Hva handler det om? Det viser seg noen regler.
Følgende liste beskriver reglene i detalj for å lage arrayer konstant:
-
Hvis du vil lage en matrise konstant, kan du forutse sin type med ordet const. Når du gjør det, er arraynavnet konstant, og elementene i arrayet er også konstant. Dermed kan du ikke ha en konstant rekkevidde med ukonstruerte elementer, og du kan heller ikke ha en uavhengig rekke med konstante elementer.
-
Begrepet nonconstant array eksisterer bare i gcc og er ikke ANSI-standard.
Hvis du virkelig ønsker å bli teknisk, sier C ++ ANSI-standarden at når du legger ordet const foran en array-deklarasjon, gjør du ikke arrayet konstant; du sier at arrayet bare inneholder konstanter.
Likevel, når du bruker const på denne måten, gjør de fleste kompilatorer også arrayet selv konstant. Men det er greit. folk bør ikke ta et array navn og kopiere det til noe annet. Det er ikke bra programmeringsstil, og det ber bare om feil - eller i det minste forvirring - senere.