Declarare șir

Cum se declară și cum se memorează un șir de caractere 

DECLARAREA ȘIRURILOR DE CARACTERE

Forma generala de declarare a unui sir de caractere:

char nume_sir[dimendiune];
Exemplu:

char s1[10]; char s2[10]="sirul 2"; char s3[ ]="sirul 3";

unde:

  • s1 = vector de caractere care poate conţine maxim 9 caractere (s-au alocat 10 octeţi).
  • s2 = vector de caractere care poate conţine maxim 9 caractere şi care conţine 7 caractere (s-au alocat 10 octeţi).
  • s3 = vector de caractere care poate conţine maxim 7 caractere şi car conţine 7 caractere (s-au alocat 8 octeţi).

Greşeli:
char s4[ ];
char s5[5]="abcdef";

De ce este greșit?

  • pentru s4 => s-au alocat 0 octeţi => eroare de compilare 
  • pentru s5 => s-au alocat 5 octeţi şi s-au iniţializat primele 6 poziţii = >eroare de compilare

Atenţie !!

Dacă instrucţiunile programului adaugă caractere unui şir de caractere, depăşind astfel spaţiul alocat, operaţiile se vor efectua eronat. Este posibil să se modifice astfel alte variabile. Se recomandă alocarea unui spaţiu suficient de mare pentru evitarea unui astfel de caz.

1.2. Vizualizarea unui şir de caractere (modul de memorare)

Dacă avem următoarea declare a unui șir de caractere 

    char s[15]="LIMBAJUL C++";
Explicaţii: Pentru memorarea unui şir de caractere, compilatorul reţine doar adresa primului caracter din şir. Celelalte caractere vor fi memorate folosind octeţii următori. Compilatorul indică sfârşitul şirului de caractere plasând un caracter '\0' (caracterul cu codul ASCII 0) după ultimul caracter din şir.
Exemplu:
char s1[11]="Informatica";
char s2[100]="sir de lungime maxima 99";
cout <<"s1: "<< s1 << endl;
s2[5]='\0';
cout <<"s2: "<< s2 << endl;

se va afișa:

s1: Informaticasir de lungime maxima 99
s2: sir d

Explicaţii: 

  • s-au alocat 15 octeţi la declarare
  • s-a memorat şirul de lungime 12 ( începând cu poziția 0 până la 11)
  • după ultimul caracter din şir a fost adăugat automat caracterul NULL ('\0' adică caracterul cu codul ASCII 0) indicând astfel sfârşitul şirului.
  • au rămas liberi(neocupați) 3 octeţi

Pentru memorarea unui şir de caractere, compilatorul reţine doar adresa primului caracter din şir. Celelalte caractere vor fi memorate folosind octeţii următori. Compilatorul indică sfârşitul şirului de caractere plasând un caracter '\0' (caracterul cu codul ASCII 0) după ultimul caracter din şir. 

Explicaţii:Caracterul 'a' se memorează pe 1 octet, pe când şirul de caractere "a" se memorează pe doi octeţi: Caracterul 'a' și a \0. Deci un șir de caractere de lungime 1 nu este echivalent cu 1 caracter.


Morar Filip, clasa a XII-a A, Colegiul Național ”Ștefan cel Mare”, Suceava, Proiect pentru Examenul de Atestat Profesional, 2017
Creat cu Webnode
Creați un site gratuit! Acest site a fost realizat cu Webnode. Creați-vă propriul site gratuit chiar azi! Începeți