Siruri de caractere C++ – notiuni introductive

O constanta de tip sir de caractere de declara intre doua caractere “. In memoria interna, o constanta de acest tip este retinuta sub forma unui vector de caractere. Fiecare componenta a sirului (incepand cu cea de indice 0) retine codul ASCII al caracterului pe care il memoreaza. Conventia este ca ultimul octet sa retina 0 (codul caracterului nul). Caracterul nul este memorat automat. Trebuie rezervate lungimea_sirului+1 caractere char (+1
pentru caracterul nul). Limbajul C/C++ permite initializarea unui tablou de caractere printr-o constanta sir, care include automat caracterul null.

Exemplu :

  1. char vect[11]=”calculator”;
  2. char vect[]=”calculator”; (compilatorul face calculul numarului de octeti necesari)
  3. char vect[100]=”calculator”; (s-au rezervat mai multi octeti decat era necesar)

Sirurile de caractere sunt de fapt tablouri de caractere, care au ca ultim element un terminator de sir, caracterul null.

Exemplu:

De asemenea, sirurile de caractere pot fi declarate folosind pointeri.ATENTIE!! Unui sir astfel initializat nu i se poate modifica valoarea. El este retinut in memorie ca un sir constant. Pe langa aceasta, un sir declarat cu char *p nu poate fi citit normal, cu cin sau cin.get. Nu se recomanda folosirea lor decat la apelul functiilor strtok, strchr,strstr sau in momentul declararii unor siruri constante.

Exemplu: char *p = “sir constant”.

Pointerii retin informatia de la o anumita adresa. Astfel, stiind ca functiile strtok, strchr si strstr returneaza adresa unor elemente, pentru accesa informatia de la acea adresa este recomandat sa folosim un char * (pointer catre un element de tip char).

 

One Comment

  1. Fraților, vă mulțumesc pentru că ați creat acest sait. Este extrem de util!
    De ce nu scrieți voi și o carte, tot în acest fel, adică pe înțelesul tuturor? Probabil că ați face mai mulți bani decât faceți cu saitul.

    Baftă în continuare!




    19

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *