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 99s2: 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.