2. Указатели используются для динамического выделения памяти.
3. Использование указателей может повысить эффективность работы некоторых программ.
4. Указатели, как правило, используются для поддержки некоторых структур данных типа связанных списков и двоичных деревьев.
Указатель содержит адрес памяти. Как правило, данный адрес содержит местоположение какой-либо переменной в памяти. Если одна переменная содержит адрес другой, то говорят, что первая переменная указывает на вторую.
Если переменная должна содержать указатель, она объявляется следующим образом:
тип *имя;
где тип – это любой допустимый тип (базовый тип указателя), а имя – это имя переменной-указателя. Все арифметические действия с указателями выполняются применительно к базовому типу. Поэтому базовый тип указателя играет важную роль.
Имеется два специальных оператора для работы с указателями - * и &.
Оператор & - это унарный оператор, возвращающий адрес операнда. Например:
p=#
помещает адрес переменной num в p.
Оператор * - это унарный оператор, возвращающий значение переменной, находящейся по указанному адресу. Например, если р содержит адрес памяти переменной num, то
q=*p;
поместит значение num в q.
Пример:
#include <stdio.h>
int main(){
int num, q;
int *p;
num = 100;
p=#
q=*p;
printf("%d\n", q);
return 0;
}
К указателям могут применяться только две арифметические операции: сложение и вычитание. Помимо прибавления или вычитания к указателю целых чисел, можно вычитать из одного указателя другой. Нельзя умножать или делить указатели, нельзя складывать указатели, нельзя добавлять или вычитать типы float и double.