Указатель - это адрес некоторого объекта, через него можно обращаться к этому объекту. Унарная операция & дает адрес переменной. Операцию & можно применять только к переменным и элементам массива. Пример присвоения адреса переменной "х" переменной-указателю "у":
int x,*y;
у=&х;
Унарная операция * воспринимает свой операнд как адрес некоторого объекта и использует этот адрес для выборки содержимого. Пример извлечения значения по адресу указателя
int x,*y,z;
у=&х;
z=*y;
Указатели можно использовать как операнды в арифметических операциях. Если у- указатель, то унарная операция у++ увеличивает его значение. Для у++ - адрес следующего элемента. Указатели и целые числа можно суммировать. Конструкция у+n (у - указатель, n - целое число) задает адрес n-го объекта, на который указывает у. Это справедливо для любых объектов (int, char, float и т.п.). Транслятор будет масштабировать приращение адреса в соответствии с типом, определенным в соответствии с объявлением (int *y; char *y; float *y).
Любой указатель можно проверить на равенство (==) или неравенство (!=) со специальным значением NULL, которое записывается вместо нуля. Слово NULL позволяет определить указатель, который ничего не адресует.
int *y;
y=NULL;
int x=5;
if(y==NULL) y=*x;
Обратите внимание, при создании указателя в нем находится произвольное значение, т.е. он ссылается на любой фрагмент памяти. Если вы по тексту программы проверяете значение указателя на NULL, то после объявления указателя его необходимо приводить к значению NULL.