Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (18.11.2011 в 15:43)
Указатели - это переменные специального типа, которые хранят адрес области памяти. По этому адресу может находиться что угодно, переменная, массив, объект, картинка, таблица других указателей и даже функция. Причем на одну и ту же область может ссылаться сразу несколько указателей, адреса в них можно присваивать другим указателям или передавать их в качестве параметров функций. Это очень выгодно, вместо того, чтобы копировать мегабайтный кусок памяти, вы копируете обычную переменную размером в 4 байта и тем не менее имеете возможность оперировать с этим мегабайтным куском в любом месте, куда вы переслали указатель. В случае же функции вы получаете возможность передавать в другую функцию указатель на любую другую функцию (т.е. получаете возможность гибко изменять логику программы, путем передачи для вызова различных функций).

При работе с указателями сложность вызывает то, что вы можете обращаться как к адресу, так и к значению, путем разименования указателя, а также то, что указателю нужно передавать адрес (а не значение), который необходимо получать при помощи оператора &
#include <stdio.h>
#include <iostream>
using namespace std;

// Главная функция
int main()
{
   // Переменная
   int i = 200;
   // Указатель
   int *ptr;
   // Помещаем в указатель адрес переменной i
   ptr = &i;
   // Обращение к значению i через указатель
   cout << "*ptr = " << *ptr << endl;
   // Адрес, который хранится в указателе
   cout << "ptr = " << ptr << endl;
   // Пауза перед закрытием
   system("PAUSE");
   return 0;
 }

Другой сложностью является то, что указатели могут ссылаться на другие указатели и зачастую может получаться целая цепочка ссылок p1 -> p2 -> p3 и т.п.

PS Ну и совсем весело начинается, при работе с указателями на объекты, которые сами по себе довольно сложные конструкции...


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: