Указатели - это переменные, которые хранят адреса объектов. Указатели - фамильная принадлежность языка Си. В неявном виде указатели присутствовали и в других языках программирования, но в Си они используются гораздо чаще, а работа с указателями организована максимально просто.
При описании указателя надо задать тип объектов, адреса которых будут содержаться в нем. Перед именем указателя при описании ставится звездочка, чтобы отличить его от обычной переменной. Примеры описаний указателей:
int *a, *b, c, d; char *e; void *f;
В первой строке описаны указатели a и b на тип int и простые переменныe c и d типа int (c и d - не указатели!).
С указателями возможны следующие два действия:
a = &c;
указателю a присваивает значение адреса переменной c;
d = *a;
присваивает переменной d значение целочисленной переменной, адрес которой содержится в a. Так как ранее указателю a был присвоен адрес переменной c, то в результате переменной d присваивается значение c, т.е. данная строка эквивалентна следующей:
d = c;
Ниже будут рассмотрены также арифметические операции с указателями, которые в языке Си чрезвычайно важны.