If it's stupid but works, it isn't stupid.
Указатели - переменные, предназначенные для хранения адресов областей памяти.

3 вида указателей
- указатели на объект
- указатели на функцию
- указатели на void

Указатель не является самостоятельным типом, он всегда связан с каким-либо другим конкретным типом.

Указатель на функцию - содержит адрес, по которому передается управление при вызове функции.

тип(*имя) (список_типов_аргументов)

int (*fun) (double, int)

- указатель с именем fun на функцию, возвращающую значение типа int и имеющую два аргумента типа double.

Указатель на объект - содержит адрес области памяти, в которой хранятся данные определенного типа (основного или составного)

тип *имя

int *a

Указатель на void - применяется в тех случаях, когда конкретный тип объекта, адрес которого нужно хранить, не определен (например, если в одной и той же переменной в разные моменты времени требуется хранить адреса объектов различных типов).

Указателю на void можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями, но перед выполнением каких-либо действий с областью памяти, на которую он ссылается, требуется преобразовать его к конкретному типу явным образом.

Указатель может быть константой или переменной, а так же указывать на константу или переменную .



Инициализация указателей
Указатели чаще всего используются для работы с динамической памятью - свободная память, в которой можно во время выполнения программы выделять место в соответствии с потребностями.

2 способа работы с динамической памятью
1. Исп-я семейство функций malloc (C) (#include )
2. операции new и delete

Выделение памяти


Освобождение памяти


При определении указателя нужно стараться выполнить его инициализацию
Способы инициализации указателей
- с помощью операции получения адреса


- с помощью значения другого инициализированного указателя


@темы: C++, C++ Указатели