Stocarea unei matrice în memorie

Global (un fișier)

Un program de calculator în ansamblu sau procedura sa separată se numește reentrant dacă este proiectat astfel încât aceeași copie a instrucțiunilor programului în memorie să poată fi partajată de mai mulți utilizatori sau procese.





În acest caz, al doilea utilizator poate provoca codul reintrare înainte să-l finalizeze primul utilizator, și cel puțin nu ar trebui să conducă la o eroare, iar în cel mai bun caz, nu ar trebui să cauzeze calculul pierderilor (de exemplu, nu pare necesară pentru a îndeplini fragmente de cod deja efectuate) .







Funcții reintrare sunt strâns legate de securitate într-un mediu multithread (fir de siguranță), cu toate acestea, sunt diferite concepte (în programarea practică în cadrul sistemelor de operare moderne, termenul de „reintrare“, de fapt, este echivalent cu termenul «thread-safe»). Asigurarea reenetrabilității este cheia programării sistemelor multitasking, în special a sistemelor de operare.

Pentru a asigura reîncadrarea, trebuie îndeplinite mai multe condiții:

· Nici o parte a codului numit nu trebuie modificată;

· Procedura numită nu ar trebui să stocheze informații între apeluri;

· Dacă procedura modifică orice date, acestea trebuie să fie unice pentru fiecare utilizator;

· Procedura nu ar trebui să returneze indicii la obiecte care sunt comune utilizatorilor diferiți.

În general, pentru a asigura reintrarea, este necesar ca procesul sau funcția de apelare să treacă de fiecare dată toate datele necesare procesului chemat. Astfel, o funcție care depinde numai de parametrii săi, nu folosește variabilele globale și statice și solicită numai funcții reentante, va fi reentrant. Dacă funcția utilizează variabile globale sau statice, este necesar să se asigure că fiecare utilizator stochează copia locală a acestor variabile.

Situația în care o funcție se produce într-un fel sau altul, se numește recursiune. Recurgerea, atunci când o funcție se referă direct la ea însăși, este numită linie dreaptă; altfel se numește indirectă.

Toate funcțiile C ++ (cu excepția funcției principale) pot fi folosite pentru a construi recursivitatea.

Într-o funcție recursivă, trebuie să existe cel puțin o condiție, caz în care secvența apelurilor recursive trebuie terminată.

18) Arrays sunt proiectate pentru a stoca mai multe valori de același tip. De exemplu, în programul Fahrenheit-Celsius. am calculat temperatura medie de trei. Dacă valorile nu sunt trei, dar mult mai mult, atunci trebuie doar să folosiți matrice.

Înainte de a putea utiliza o matrice, trebuie să o definiți. Definiția unei matrice include: tipul de date stocate în matrice, numele matricei și numărul elementelor din matrice sunt indicate în paranteze pătrate:

În acest cod, am definit o matrice cu un identificator de matrice (matrice) de zece elemente de tip int.

În această formă, toate elementele matricei sunt încă neinitializate. Pentru a le inițializa la declarație, trebuie să utilizați următoarea sintaxă:

Stocarea unei matrice în memorie

Elementele matricei sunt plasate în memorie consecutiv, unul câte unul. Fiecare element al matricei ocupă o memorie la fel de mare ca cea alocată unei variabile al cărei tip este specificat în descrierea matricei.

Dimensiunea matricei este numărul total de elemente din matrice. Mai des, dimensiunea unei matrice este înțeleasă ca fiind cantitatea de memorie ocupată de o matrice - acesta este numărul total de elemente din matrice, înmulțit cu mărimea unui element. Dimensiunea pe care matricea variabilă o ocupă în memorie poate fi găsită în program utilizând construcția

O constantă literală este o constantă (număr, expresie șir, dată) localizată direct în cod.

De exemplu: X = Y + 2

Aici, numărul 2 este o constantă literală.


Caracterele de caractere stochează informații cum ar fi numele fișierelor, titlurile cărților, numele angajaților și alte combinații de caractere. Majoritatea programelor C ++ utilizează extensiv caracterele de caractere. În continuare, veți afla că în C ++, caracterele de caractere sunt stocate într-o matrice de tip char, care se termină cu un caracter NULL (sau ASCII 0). În această lecție, șirurile de caractere sunt discutate mai detaliat. Veți învăța cum să stocați și să procesați șiruri de caractere și cum să utilizați funcțiile bibliotecii runtime care manipulează șirurile de caractere. Până la sfârșitul acestei lecții, veți învăța următoarele concepte de bază:

Indicele este unul dintre cele mai importante concepte ale limbajului C.

Înțelegerea și utilizarea corectă a indicatoarelor este necesară în special pentru compilarea programelor bune din următoarele motive:

· Pointerii reprezintă un mijloc prin care funcțiile pot schimba valorile argumentelor care îi sunt transmise;

· Alocarea dinamică a memoriei este realizată folosind indicii;

· Indicatorii permit creșterea eficienței programării;

· Indicatorii oferă suport pentru structuri dinamice de date (copaci binari, liste legate).

Cu toate acestea, pointerul poate provoca o serie de dificultăți, de exemplu, dacă indicatorul conține o valoare incorectă, programul poate fi inoperant. Puteți face ușor greșeli atunci când folosiți indicii; în plus, greșelile legate de valorile incorecte ale indicilor sunt foarte greu de găsit.

Tipul indicelui specifică tipul de obiect la care se va referi indicatorul, de exemplu,

20) Conceptele pointerilor și ariilor sunt strâns legate. Luați în considerare următorul fragment de program:

Aici p1 indică primul element al array str. Puteți accesa cel de-al cincilea element al array-ului cu ajutorul a două expresii:







Articole similare

Trimiteți-le prietenilor: