Эту статейку я написал для тех, кто начиная изучать С++ побаивается указателей :)
На самом деле нет ничего страшного, это всего лишь обыкновенная косвенная адресация.
Для написания демки я использовал C++Builder, написал консольное приложение.
Вообще всем кто хочет стать программистами советую начинать именно с консольных приложений!
В открывшееся окошко программы нужно вставить строчку
#include <iostream>
Ну вот можно и указателями заняться.
Для начала объявим переменные и присвоим значения:

int a,b,q,w;     
  a=10;
  b=20;
 
А теперь немного теории ...
&- знак взятия адресса переменной.
то есть если записать &a - то это значит адресс переменной.
Чтобы посмотреть адресс переменной напишем строчку
cout << "&a  = " << &a << endl;
На экран выведется длинное число с адрессом, в котором находится переменная "а".
( Далее на фото текст всей демки с коментариями и результат работы консоли)
Чтобы хранить эти адресса существует особый вид переменных - указатели. По сути &а
это тоже указатель, но не переменная , а константа.
Чтобы объявить переменную-указатель используется звёздочка -*
На самом деле всё намного проще, *- это символ косвенной адрессации, то есть обратное действие &

  int *c,*d; -объявляет указатели на тип int .То есть говорит, что адресса в этих указателях для переменных
  типа int.
 
c=&a; -в указатель "с" записали адресс переменной "а"
Теперь если добавим строчку
   cout << "c = " << c << endl;
   То увидим, что результат тот же, что и в строчке
   cout << "&a  = " << &a << endl;
   
   q=*c; - означает, что в переменную "q" поместится значение из адресса на который указывает указатель "с",
   то есть из адресса переменной "а" . Эта запись равносильна  "q=a"   
   cout << "q = " << q << endl; -покажет результат :)
 
  Теперь займёмся указателем на указатель.
  d=&b;- указатель на переменную "b"
 
int **s; объявляем указатель на указатель. Всё очень просто, так как указатель -переменная,
значит у указателя тоже свой адресс имеется :)
  s=&d; -присваиваем указателю на указатель "s" адресс указателя d
  Чтобы вытащить значение самой переменной придётся уже звёздочкой воспользоваться дважды.
  Вот строчки:
cout << "d = " << d << endl;
cout << "s = " << s << endl;
cout << "**s = " << **s << endl;

Ну вот пожалуй и всё. Поняв этот материал больше проблем в изучении С++ не будет!
   
   

   
#pragma hdrstop
#include <condefs.h>

#include <iostream>

//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char **argv)
{
  int a,b,q,w;     
  a=10;
  b=20;
  int *c,*d;   
  c=&a;
  d=&b;
  q=*c;
  w=*d;
     int **s;
     s=&d;
  cout << "&a  = " << &a << endl;
  cout << "&b  = " << &b << endl;
  cout << "c = " << c << endl;
  cout << "d = " << d << endl;
  cout << "q = " << q << endl;
  cout << "w = " << w << endl;
  cout << "s = " << s << endl;
  cout << "**s = " << **s << endl;
  system("pause");

        return 0;
}

http://s9.uploads.ru/t/isFA3.jpg