|
< C a p i t o l u l a n t e r i o r < |
Declarare În plus avem:
Tipuri standard de date predefinite Î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:
Iar următoarele tipuri sunt reale:
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: Și apoi să vedem ce este afișat la execuția programului: Î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: Î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?
Motivul:
Hei, mersi de răspuns.
|