Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:laboratoare:lab07 [2025/10/15 18:31]
darius.neatu [Referinţe]
programare:laboratoare:lab07 [2025/11/18 11:49] (current)
cosmin_stefan.popa
Line 4: Line 4:
 **Resposabili**:​ **Resposabili**:​
   * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (2016-2020)]]   * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (2016-2020)]]
 +  * [[teodor.matei.birleanu@gmail.com|Bîrleanu Teodor Matei (2025 - prezent)]]
   * [[neatudarius@gmail.com|Darius Neațu (2019-2020)]]   * [[neatudarius@gmail.com|Darius Neațu (2019-2020)]]
   * [[emil.racec@gmail.com|Emil Racec (2012)]]   * [[emil.racec@gmail.com|Emil Racec (2012)]]
Line 23: Line 24:
 === Şiruri de caractere === === Şiruri de caractere ===
  
-Un **caracter** se declară în C de forma: ''​char a=%%'​a'​%%'';​ Pentru inițializarea lui, se observă că am pus un caracter între ​apostroafe.+Un **caracter** se declară în C de forma: ''​char a=%%'​a'​%%'';​ Pentru inițializarea lui, se observă că am pus un caracter între ​apostrofuri.
  
 Un **şir de caractere** presupune practic un vector de caractere, terminat prin caracterul ''​\0''​. ​ Un **şir de caractere** presupune practic un vector de caractere, terminat prin caracterul ''​\0''​. ​
  
-Compilatorul folosește în mod implicit această reprezentare,​ astfel încât cea mai simplă declarație este ''​char c[]="​cuvant"'';​ Observăm aici folosirea ghilimelelor în locul apostroafelorAcecastă instrucțiune va aloca un spațiu de ''​7''​ octeți pe care va reprezenta șirul de caractere '​cuvant'​ (care are ''​6''​ caractere). ​+Compilatorul folosește în mod implicit această reprezentare,​ astfel încât cea mai simplă declarație este ''​char c[]="​cuvant"'';​ Observăm aici folosirea ghilimelelor în locul apostrofurilorAceastă instrucțiune va aloca un spațiu de ''​7''​ octeți pe care va reprezenta șirul de caractere '​cuvant'​ (care are ''​6''​ caractere). ​
  
 Dacă dorim să alocăm un spațiu de memorie mai mare (pentru a putea folosi variabila pentru a stoca șiruri de caractere mai lungi), putem folosi o declarație de tipul ''​char c[10] = "​cuvant";''​. Astfel am alocat spațiu suficient pentru un șir de ''​9''​ caractere. Dacă dorim să alocăm un spațiu de memorie mai mare (pentru a putea folosi variabila pentru a stoca șiruri de caractere mai lungi), putem folosi o declarație de tipul ''​char c[10] = "​cuvant";''​. Astfel am alocat spațiu suficient pentru un șir de ''​9''​ caractere.
Line 45: Line 46:
 Diferenţa majoră dintre între ele este însa că primele două declaraţii vor aloca 5 pozitii în memorie, pe când ultima nu va aloca nici o zona de memorie, necesitând sa fie ulterior alocată, folosind funcţiile de alocare dinamică (''​malloc(),​ calloc(), realloc()''​),​ prezentate în laboratorul anterior. Diferenţa majoră dintre între ele este însa că primele două declaraţii vor aloca 5 pozitii în memorie, pe când ultima nu va aloca nici o zona de memorie, necesitând sa fie ulterior alocată, folosind funcţiile de alocare dinamică (''​malloc(),​ calloc(), realloc()''​),​ prezentate în laboratorul anterior.
  
-Între prima și a 2-a declarație,​ diferența este mai subtilă și constră în faptul că declarația ''​char *b="​unsir"''​ va determina compilatorul să plaseze șirul respectiv într-o zonă de memorie asupra căreia nu avem drepturi de scriere, deci orice încercare de a modifica acel șir - pe Linux - va genera, cel mai probabil, o eroare de tipul ''​segmentation fault''​.+Între prima și a 2-a declarație,​ diferența este mai subtilă și constă în faptul că declarația ''​char *b="​unsir"''​ va determina compilatorul să plaseze șirul respectiv într-o zonă de memorie asupra căreia nu avem drepturi de scriere, deci orice încercare de a modifica acel șir - pe Linux - va genera, cel mai probabil, o eroare de tipul ''​segmentation fault''​.
  
 Un mic exemplu de citire a unui şir, caracter cu caracter pana la întâlnirea caracterului ''​-'':​ Un mic exemplu de citire a unui şir, caracter cu caracter pana la întâlnirea caracterului ''​-'':​
programare/laboratoare/lab07.1760542307.txt.gz · Last modified: 2025/10/15 18:31 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0