(Borland C++Builder 6) [Статья 5] char (*MYfun) (char, char)(Указатель на функцию)(C/C++)

| 30.08.2015

(Borland C++Builder 6) [Статья 5] char (*MYfun) (char, char)(Указатель на функцию)(C/C++)

Описание
Указатели это чрезвычайно мощный инструмент в программировании. С помощью указателей некоторые вещи в программировании можно сделать намного проще и при этом эффективность работы вашей программы значительно повысится. Указатели даже позволяют обрабатывать неограниченное количество данных. Например, с помощью указателей можно изменять значения переменных внутри функции, при этом переменные передаются в функцию в качестве параметров. Кроме того, указатели можно использовать для динамического выделения памяти, что означает, что вы можете писать программы, которые могут обрабатывать практически неограниченные объемы данных на лету — вам не нужно знать, когда вы пишете программу, сколько памяти нужно выделить заранее. Пожалуй, это самая мощная функция указателей. Для начала давайте просто получим общее представление об указателях, научимся их объявлять и использовать.

Указатель на объект

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

тип *имя;

где тип может быть любым, причем тип может быть к этому моменту только объявлен, но еще не определен (следовательно, в структуре, например, может присутствовать указатель на структуру того же типа). Звездочка относится непосредственно к имени, поэтому для того, чтобы объявить несколько указателей, требуется ставить ее перед именем каждого из них.  Можно определить указатель на указатель и т. д.

Примеры

Тема стандартная так что раскрыта в уроке:
(Урок_6) Указатели и Функции (*.&) (C/C++)

Указатель на функцию

Указатель на функцию содержит адрес в сегменте кода, по которому располагается исполняемый код функции, то есть адрес, по которому передается управление при вызове функции. Указатели на функции используются для косвенного вызова функции (не через ее имя, а через обращение к переменной, хранящей ее адрес), а также для передачи имени функции в другую функцию в качестве параметра. Указатель функции имеет тип «указатель функции, возвращающей значение заданного типа и имеющей аргументы заданного типа»:

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

Данное объявление создаёт указатель на функцию с именем имя, в которой содержаться переменные описание_переменных и которая возвращает значение типа тип_возврата.

Примеры

Указатель типа void

Как известно, при объявлении переменной-указателя необходимо указывать его тип (например, int, float и char). Указание типа позволяет компилятору корректно выполнить операции сложения и вычитания с указателем, умножая добавляемую или вычитаемую величину на длину типа для получения смещения. В некоторых случаях, однако, этого не требуется. Может оказаться, что в программе достаточно просто получить указатель памяти, с которым она будет работать далее по назначению.

В таком случае программа может создавать указатель типа void:

При просмотре библиотечных функций, представленных в разделе “Работа с памятью”, можно заметить, что некоторые функции возвращают указатель на тип void. Для таких функций существенно то, что они возвращают указатель на область памяти, для которой (при компиляции) нет информации о том, какого типа данные должны содержаться в памяти.

Проектик в Builder 6 [ ссылка ]



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *