В С/С++ существует понятие указателя. Указатель – это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера.
int *a; //создается указатель с типом данных int
Тип данных определяет возможные действия над указателем. Так же не стоит забывать про void.
int b=2;//создаем переменную со значением 2
a=&b;//записываем в указатель а АДРЕС значения переменной b
То есть оператор & возвращает адрес переменной.
Теперь небольшой фокус:
int *a;
int b=2;
a=&b;
int v;
v=*a;//в значение переменной v будет находиться 2
//, здесь*a -называется разыменованием
//тоесть по сути это равнозначно v=b;
Теперь самое интересное! Операции над указателями.
Над указателями определено 5 основных операций.
1)
Определение адреса указателя: &p, где p – указатель (&p – адрес ячейки, в которой находится указатель).
2)
Присваивание. Указателю можно присвоить адрес
переменной p=&q, где
p – указатель, q – идентификатор
переменной.
4) Увеличение (уменьшение) указателя. Увеличение выполняется как с помощью операции сложения (+), так и с помощью операции инкремента (++). Уменьшение – с помощью операции вычитания (–) либо декремента (––).
Например, пусть p1 – указатель,
тогда р1++
перемещает указатель на:
-1 байт, если *p1 имеет тип
char; -4 байта, если *p1 имеет тип int (в 32 разрядной операционной системе) или 2 байта (в 16 разрядной операционной системе);
-4 байта, если *p1 имеет тип float.
5) Разность двух указателей. Пусть р1 и р2 – указатели одного и того же типа. Можно определить разность р1 и р2, чтобы найти, на каком расстоянии друг от друга находятся элементы массива.
Комментариев нет:
Отправить комментарий