Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
În această lecție discutăm ce este un pointer în C++. Se recomandă urmărirea lecției cu șiruri de caractere înainte de aceasta, pentru a înțelege mai exact la ce sunt buni.
Să declarăm un șir de caractere:
char s[] = "InfoAs";
Am discutat că s
este un tablou unidimensional — un șir de caractere, reprezentat printr-un vector de char
. Însă, în esență, s
este defapt un pointer, adică atunci când îl apelăm pe s
în programul nostru, tot ce facem este să mergem pe poziția unde este salvată informația din s
, adică "InfoAs"
în cazul nostru. Mai precis de atât, s
este un pointer către primul caracter din șirul nostru, adică către caracterul 'I'
.
Tipul char *
este o metodă de a reține un pointer, însă fără să avem un loc definit unde să salvăm informația (spre deosebire de s
, unde am făcut loc pentru a reține "InfoAs"
).
Un pointer se declară ca mai jos și i se poate atribui o anumită adresă de memorie (spre exemplu, locația de unde începe s
), lucru ce îi dă posibilitatea să funcționeze ca șirul de caractere căruia i s-a dat adresa:
#include <iostream>
using namespace std;
int main()
{
char s[] = "InfoAs";
//Declarare pointer p:
char *p; //sau, char* p | char * p (sunt exact la fel!)
//p în acest moment reține o locație aleatorie, exact ca o variabilă neinițializată, deci nu putem face nimic cu el încă
cout << s << "\n"; //afișare: InfoAs
p = s; //p este acum echivalent cu s
cout << p << "\n"; //afișare: InfoAs
cout << p[3] << "\n"; //afișare: o
p = p + 1;
cout << p << "\n"; //afișare: nfoAs
p = s + 4;
cout << p << "\n"; //afișare: As
}