Se poate trece la capitolul următor cu tasta ► și se poate reveni la un capitol precedent cu tasta ◄

Cum putem declara variabile şi pointeri in C++


<

C
a
p
i
t
o
l
u
l

a
n
t
e
r
i
o
r

<

Declarare

Cum putem declara o variabilă în limbajul de programare C++ și cum o putem afișa în consolă.

În plus avem:

  1. Pe prima linie #include < iostream.h >. IOStream.h este o bibliotecă predefinită care ne ajută să citim și să tipărim din consolă și e legat în mod direct de linia: cout << "A=" << a << endl;
  2. cout vine de la c out, modul standard de tipărire în C++. Fiecare parametru, de data asta, va fi pus după operatorul << iar prin endl cursorul va fi mutat pe o linie nouă.
  3. Declararea variabilelor se face urmând tiparul de mai sus: tip variabilă nume variabilă. Putem avea mai multe variabile de acelaș tip, în acest caz lista de variabile e separată prin „ , ” (virgulă). De exemplu: int nVarA, nVarB;
  4. Aici avem și două avertismente care ne spun că două variabile au fost declarate dar nu au fost utilizate ceea ce e de folos. În cazul acesta putem să le ignorăm.
  5. Rulând programul vom vedea că se va tipări o valoare diferită de 0. Asta readuce din nou în discuție problema inițializării variabilelor.

Tipuri standard de date predefinite

Care sunt diferitele tipuri de variabile disponibile în limbajul de programare C++.

În cazul C++ului avem de-a face cu un nou concept în ceea ce priveste variabilele: semnul. Dacă nu e specificat orice variabilă de orice tip e cu semn, adică poate avea valori atât negative cât și pozitive. Adăugând cuvântul rezervat unsigned specificăm compilatorului că nu ne interesează valorile negative. Inversul său este cuvântul signed. El există, dar e înțeles implicit.

De asemenea mai există cuvintele rezervate long și short care se folosesc tot în combinație cu tipurile standard de date.

Domeniul și semnificație tipurilor de date este:

  • unsigned char are domeniul de la 0 la 255 și are lungimea de 1 octet
  • char are domeniu de la -128 la 127, lungimea sa e tot de 1 octet
  • enum, short int și int de la -32 768 la 32 767, 2 octeți
  • unsigned int e la fel, doar fără semn, are valori de la 0 la 65 535, ocupând 2 octeți
  • long are valori de la - 2 147 483 648 la 2 147 483 647, el fiind reprezentat pe 4 octeți

Iar următoarele tipuri sunt reale:

  • float are valori de la 3.4E-38 până la 3.4E+38, este pe 4 octeți
  • double valori 1.7E-308 până la 1.7E+308, pe 8 octeți
  • long double, de la 3.4E-4932 până la 1.1E+4932 și este pe 10 octeți

Observăm o absență: tipul boolean. C++ nu are un tip boolean definit separat. Frumusețea limbajului constă în faptul că 0 semnifică fals și orice altceva înseamnă adevărat. De pildă valoarea 2 e echivalent cu adevărat într-o ecuația logică.

Utilizarea pointerilor

De asemenea, avem pointerii, care pot fi de una din tipurile enumerate mai sus. Din nou țin să amintesc că un pointer doar indică o locație din memoria (RAM) a calculatorului. Faptul că un pointer e integer sau long semnifică doar câți octeți de la poziția indicată sunt citiți. Iar în C++ această lungime poate să fie schimbată oricând.

Dacă avem o variabilă pVar întreagă, deci ocupând 2 octeți, în C++ putem ușor să-l facem char (care e de lungime de 1 octet) și să lucrăm în felul acesta cu el.

Să vedem un exemplu concret:

Cum putem lucra cu pointeri in limbajul de programare C++.

Și apoi să vedem ce este afișat la execuția programului:

Rezultatul rulării unui program cu pointeri în limbajul de programare C++. Afisăm adresa de memorie a variabilei de tip pointer, adresa înspre care indică și valoarea existentă la adresa indicată de acesta.

În primul rând, pentru a declara o variabilă ca fiind pointer, trebuie doar adăugat caracterul „*” înainte de numele ei.

Pentru a-i schimba valoarea, se lucrează tot folosind „*” scris înaintea numelui variabilei. „*” are semnificația: La adresa indicată, pune valorea dată sau De la adresa indicată, citește valoarea existentă.

Când folosim variabila ca pe oricare alta, vom lucra cu adresa pe care ea o ține minte. Ceea ce e foarte periculos fiindcă memoria poate să fie modificată de procesul nostru și așa ... apar virușii.

Dar, revenind la ale noastre, ultimul lucru de menționat despre pointer este dat de caracterul „&” care, folosit în loc de „*”, ne arată locul ocupat în memorie de pointerul nostru. E ca și cum ne-am găsi propria adresă. În memoria calculatorului.

Șiruri de caractere

Am vorbit prima dată de pointeri pentru a putea vorbi despre șiruri de caractere. În C++ sunt speciale pentru că sunt tratate ca niște șiruri dinamice de caractere. Să vedem declararea lor:

Cum putem defini șiruri de caractere în limbajul de programare C++

În primul rând se observă că un șir de caractere este, de fapt, un pointer. Către un caracter care nici măcar nu este o literă (mai sus am spus că char este un tip de dată întreg, cu valori de la -128 la 127). Asta ne spune că avem de-a face cu pointeri, iar lungimea sa este de 1 octet. Stați așa! Un octet? Asta înseamnă o singură literă. Exact! Aici apare frumusețea (și frustrarea pointerilor). Am declarat lungimea de un singur octet însă tot limbajul de programare știe că avem de-a face cu un șir de caractere.

În momentul în care facem o atribuire, programul în timpul rulării va găsi un spațiu în memorie suficient de lung pentru textul ales, va atribui valoarea de început lui sir, iar conținutul va fi copiat începând de la poziția liberă găsită. Mai mult de atât, la sfârșitul șirului va fi adăugat încă un octet și valoarea sa va fi 0. Așa programul va știi și unde se termină propoziția noastră.

La tipărire cout știe că are de-a face cu un șir de caractere și în cazul acesta nu mai trebuie să precedăm numele variabile cu semnul „*”.

Chiar, dar dacă îl punem? Ce se întâmplă? Luându-ne după semnificația sa, vom spune programului "Afișează-mi valoarea de tip caracter de la poziția indicată de pointer.", iar asta se traduce prin afișarea primei litere: A - în cazul acesta.


>

C
a
p
i
t
o
l
u
l

u
r
m
ă
t
o
r

>

Ți-a fost de ajutor ce am scris aici?
Hei, mersi de răspuns.