C++


 главная
 обо мне
 языки
 веб-дизайн
 гитара
 блок-флейта
 ссылки
 фотоальбом
 литература
 разное
 анекдоты
 макраме
 общение
 обновления



http://www.uralweb.ru/

Раскрути свой сайт

поэтический сайт Веры Степановой




Указатели в С++




Эту статейку я написал для тех, кто начиная изучать С++ побаивается указателей :)
На самом деле нет ничего страшного, это всего лишь обыкновенная косвенная адресация.
Для написания демки я использовал 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;
}









© ЯКВ-мистери 2000-2014     kestrens@mail.ru

Hosted by uCoz