Указатели
В C и C++ има специален тип променливи, в които могат да се съхраняват адреси на области от паметта. Този тип променливи са указателите. Ако с T означим даден тип, то T* ще бъде типът на указател към T. С други думи – променливите от тип T* съдържат адрес на обект от типа T. Например:
T* ps; int* pi;
В ред 1 е дефинирана променлива ps, която е указател към променливи от типа T. В ред 2 е дефинирана променлива pi, която е указател към променливи от типа int.
За да се получи адресът на дадена променлива се използва унарния оператор &. Например:
int a=42; int* pa; pa=&a;
В ред 1 е дефинирана променливата pa, която е от типа указател към int. В следващия ред 2 на pa е присвоена стойност, която е адресът на променливата a, т.е. указателят pa ще сочи към променливата a
.
Основна операция, която се извършва върху указателите, е да се получи стойността на обектът, към която сочи указателят. За тази цел се използва унарният оператор *.
Да разгледаме следния фрагмент:
int a=42; int* pa=&a; int b=*pa; *pa+=42;
В ред 3 стойността на променливата, към която сочи pa
, се присвоява на b
, т.е. резултатът от операцията е b=42
. В ред 4 стойността на променливата, към която сочи указателя pa, се увеличава с 42, т.е. резултатът от операцията е, че стойността на променливата a се е увеличила с 42.
Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране