E-mail: albescudavidefrancesco@gmail.com
Web: www.pbinfo.ro
  Legatura Dintre Pointer-i si Tablouri
  • Consideram declaratia:

    char * p , s[31] = "pbinfo";>/p>

  • Ce este p? Este un pointer la char, adica o variabila a carei valoare este adresa unei date de tip char. intrebarea este a carei date? in acest moment a niciuneia, deoarece variabila p nu a fost initializata, iar valoare ei este o adresa aleatorie. sansele ca ea sa reprezinte adresa unei date de tip char din spatiul de memorie al programului nostru sunt la fel de mici ca sansele ca valoarea initiala a unei variabile de tip int sa fie in intervalul 1 ... 100.

  • Ce este s? Spunem ca este un sir de caractere, dar practic s este tot un pointer. Valoarea sa este adresa primului element din sir, adica adresa lui s[0]. Observam ca de fapt, variabilele p si s sunt de acelasi tip, pointer la char. Diferenta dintre cele doua variabile este ca s memoreaza o adresa de memorie unde incepe un sir de caractere (la acea adresa exista o data de tip char ) in timp ce p memoreaza o adresa aleatorie.

  • Cu ce putem initializa pointer-ul p? Cu adresa unei date de tip char. O asemenea data este orice element al unui sir de caractere, de exemplu orice element din s. Daca p reprezinta adresa unui caracter dintr-un sir, atunci cu p se pot face toate operatiile care se pot face cu acel sir.

  • Iata un exemplu:

    #include < iostream >

    using namespace std;

    int main(){
         charchar * p , s[]="pbinfo";
         charcout << s << endl; // pbinfo
         charp = s;
         charcout << p << endl; // pbinfo
         charp ++;
         charcout << p << endl; // binfo
         charreturn 0;
    }