Sunteți pe pagina 1din 2

irurile de caractere din perspectiva pointerilor

Un pointer este o variabil special, a crei adres n memorie poate fi


modificat pe parcursul programului. Coninutul de la adresa de memorie poate fi
accesat i modificat n orice moment.

Declararea pointerului:
<tip> *<variabil>

n cazul nostru ne intereseaz pointeri ctre caractere:


Ex: char *p;
Dup o astfel de declarare, variabila nu are nicio adres valid n memorie. i
putem noi crea o adres, alocndu-i i un spaiu (numr maxim de caractere) sau o
putem duce ctre un spaiu deja alocat (fie al unui ir de caractere normal fie al
altui pointer).
Ex:
p=new char[<nr_max_caractere>+1];
p=new char[11]; //maxim 10 caractere
Din acest moment al alocrii, variabila poate fi folosit identic unei variabile
de tip string obinuit.
Stabilirea pointer-ului pe o anumit adres de memorie (a altui ir sau
pointer) se face prin atribuirea:
char s[10]=maria;
char *p=s;
p[0]=M;
cout<<p; // Maria

//ducem p-ul pe aceeai adres de memorie ca i s-ul

Dac p este un pointer ctre char, prim p se nelege adresa de memorie i


prin *p se nelege caracterul de la acea adres de memorie.
cout<<*p ; // M (un singur caracter)
cout<<p ; //Maria (tot irul)

Operaii cu pointeri
1. Incrementarea (p++) duce pointer-ul cu o adres la dreapta
2. Decrementarea (p--) duce pointer-ul cu a adres la stnga
3. Adunarea / scderea cu <nr> duce pointer-ul cu <nr> adrese la
dreapta/stnga.

Funcia strchr(<string>, <caracter>) caut caractrul n cadrul irului i


ntoarce un pointer ctre prima apariie a caracterului n cadrul irului dac
caracterul se gsete i NULL n caz contrar.
char s[15]="caracatita",*q;
q=strchr(s , 't');
cout<<q;
// tita
cout<<q-s;
// 6

Funcia strrchr(<string>, <caracter>) caut caractrul n cadrul irului i


ntoarce un pointer ctre ultima apariie a caracterului n cadrul irului dac
caracterul se gsete i NULL n caz contrar.

Funcia strstr(<string1>, <string2>) caut irul string2 n cadrul irului


string1 i ntoarce un pointer ctre prima apariie a sirului string2 n cadrul
irului string1 dac irul se gsete i NULL n caz contrar.
char s[15]="Ana are mere", s1[5]=re, *q;
q = strstr(s , s1);
cout<< q;
// re mere
cout<< q-s;
// 5

S-ar putea să vă placă și