- 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;
}
Legatura Dintre Pointer-i si Tablouri