Нетрудно свести лошадь к воде. Но если вы заставите ее плавать на спине - вот это значит, что вы чего-то добились!
Первый закон Хартли
Указатель - это переменная, содержащая адрес другой переменной, то есть значением переменной типа указатель является целое число, равное адресу того объекта, на который ссылается указатель.
Указатель существенно связан с типом объекта, на который он ссылается. Если в описании перед обозначением объекта поставить символ "*", то оно будет описывать указатель на объект того же типа и класса памяти, которые соответствуют данному обозначению без звездочки.
Указатели и целые переменные не являются взаимозаменяемыми объектами. Константа 0 - единственное исключение из этого правила: ее можно присвоить указателю и указатель можно сравнить с нулевой константой. Чтобы показать, что 0 - это специальное значение для указателя, вместо числа 0, как правило, записывают NULL - константу, определенную в файле stdio.h.
Унарная операция "*", называемая операцией косвенной адресации, рассматривает свой операнд как адрес объекта и обращается по этому адресу, возвращая его содержимое.
Унарная операция "&", называемая операцией нахождения адреса, примененная к переменной, возвращает ее адрес.
Например, рассмотрим последовательность операторов:
int x,y,*px;//Описание целочисленных переменных x,y и
//указателя на целое значение px.
px = &x; //Значением переменной px станет адрес переменной x.
y = *px; //Переменная y приобретает значение "того",
// на что указывает px, то есть значение переменной x.
Таким образом, два оператора присваивания в примере эквивалентны одному оператору y=x; и *px может появляться в любом выражении, в котором может встретиться х, например, продолжим рассмотрение предыдущего примера:
*px = 0;//Переменная х получает значение 0.
y = *px + 1; //Переменная y получает значение на 1 больше x.
*px += 1;//Увеличение содержимого x на единицу.
*px++;//Увеличение содержимого x на единицу, при
// этом постфиксная операция ++ не изменяет px,
//пока объект по адресу px не будет получен.
*++px; //Префиксная операция ++(--) увеличивает
*--px; //(уменьшает) px до получения значения x.
py = px; //Копирование содержимого указателя px в указатель
//py в результате чего py указывает на то же, что и px.
Замечания
1. Операция "&" применима только к переменным: конструкции вида &(х-3) или &5 запрещены.