Video: Before I die I want to... | Candy Chang 2024
Dacă aveți o matrice și nu doriți ca conținutul său să se schimbe, puteți face o gamă constantă. Următoarele rânduri de cod, găsite în exemplul Array05, demonstrează această abordare:
const int Permanent [5] = {1, 2, 3, 4, 5}; cout << permanent [1] << endl;
Această matrice funcționează ca orice altă matrice, cu excepția faptului că nu puteți modifica numerele din interiorul acesteia. Dacă adăugați o linie ca următoarea linie, veți obține o eroare de compilator, deoarece compilatorul este conștient de constante:
Permanent [2] = 5;
Iată eroarea pe care o primiți când încercați acest lucru în Cod:: Blocuri:
eroare: alocarea locației numai pentru citire "Permanent [2]"
Ce este cu o serie constantă de nonconstante? Poti sa faci asta? Uneori - în funcție de compilator. La fel de oribil ca și codul următor (găsit în exemplul Array06) arată - și nu este standardul ANSI! - aveți permisiunea de a face acest lucru cu versiuni mai vechi ale compilatoarelor gcc. (Microsoft Visual C ++ și Borland C ++ Builder nu permit acest lucru, iar codul:: Blocks compiler vă prezintă o eroare: mesajul de eroare de atribuire a unui câmp nevalid.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int AlteleList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Cu alte cuvinte, această a treia linie spune: "Uitați de ce indică AlteList; în schimb, indicați prima matrice {1, 2, 3, 4, 5}! "Acum, nu ar trebui să scrie un cod ca acesta (amintiți-vă, păstrați lucrurile simple și de înțeles), deci dacă doriți să împiedicați acest lucru, puteți face constantă:
! - 3 ->const int NonConstant [5] = {1, 2, 3, 4, 5}; const int AltList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Acum, atunci când compilatorul ajunge la a treia linie, vă oferă o eroare:
eroare: asignarea variabilei "read-only"
numai pentru citire Dar puteți observa că modul în care ați făcut constanta matricei a fost în același mod în care ați făcut elementele sale constante în codul care a venit chiar înainte de acest exemplu. Hopa! Despre ce e vorba? Se pare că există câteva reguli.
Următoarea listă descrie regulile, în detaliu, pentru a face constantă matricea:
-
Dacă doriți să creați o matrice constantă, puteți preceda tipul acesteia cu cuvântul const. Când faceți acest lucru, numele matricei este constant și elementele din interiorul matricei sunt și constante. Astfel, nu puteți avea o matrice constantă cu elemente nonconstant și nici nu aveți o matrice nonconstantă cu elemente constante.
-
Noțiunea de matrice nonconstant există numai în gcc și nu este standard ANSI.
Dacă doriți cu adevărat să obțineți tehnică, standardul C ++ ANSI spune că atunci când puneți cuvântul const în fața unei declarații de matrice, nu faceți constanta matricei; spuneți că matricele dețin numai constante.
Cu toate acestea, atunci când utilizați const în acest fel, majoritatea compilatoarelor fac de asemenea matricea însăși constantă. Dar este bine; oamenii nu ar trebui să ia un nume de matrice și să o copieze în altceva. Nu este un stil de programare bun și doar cere bug-uri - sau, cel puțin, confuzie - mai târziu.