|
|||
УказателиСтр 1 из 2Следующая ⇒ Указатели Каждая переменная это место в памяти, которое имеет свой адрес. Узнать его можно через амперсант (&) (также называется адресом оператора), который указывает на адрес в памяти.
int x = 1; cout << &x << “\n”; // Outputs “0x6dfeec”
Указатель - это переменная, которая хранит адрес другой переменной. Все указатели разделяют один тип данных – шестнадцатеричное число, которое представляет адрес области памяти.
Указатель – это переменная, которая как и другие переменные, должна быть объявлена до её использования. Знак звёздочки (*) используется для объявления указателя. Также как и с переменными, мы присваиваем указателям имя и определяем тип, на который они указывают.
int x = 1; int *a; a = &x; cout << a << “\n”; // Outputs “0x6dfeec”
Существует два оператора для указателей: оператор взятия адреса (&): возвращает адрес области памяти его операнда. Косвенное обращение к объекту (или разадресация) (*): возвращает значение переменной, размещённое по определённому операндом адресу. int x = 1; int *a; a = &x; cout << x << “\n”; cout << a << “\n”; cout << *a << “\n”; // Outputs “ 1 0x6dfeec 1 ”
Оператор разадресация в принципе является иначе названным именем для переменной, на которую указывает указатель. Все три приведённые выражения по сути равны и дают одинаковый результат. Т.е p указывает на переменную x, разадресация указателя (*p) представляет собой тоже самое, что и переменная x. int x = 5; int *p = &x; x = x + 4; x = *p + 4; *p = *p + 4;
Меняя значение указателя *p значение переменной тоже меняется. После любой из этих операций значение x станет равно 9.
|
|||
|