Тема 3 Указатели и массивы
Лекция 8. Указатели Указатели предназначены для хранения адресов областей памяти. Различают два вида указателей — указатели данных и указатели функций, отличающиеся свойствами и набором допустимых операций. Указатель не является самостоятельным типом, он всегда связан с каким-либо другим конкретным типом. Указатель функции содержит адрес в сегменте кода, по которому располагается исполняемый код функции. Указатель функции имеет тип «указатель функции, возвращающей значение заданного типа и имеющей аргументы заданного типа»: тип (*имя) (список_типов_аргументов); Например, объявление: int (*fun) (double, double); задает указатель с именем fun на функцию, возвращающую значение типа int и имеющую два аргумента типа double. Указатель данных содержит адрес области памяти, в которой хранятся данные определенного типа. Простейшее объявление указателя данных имеет вид: тип *имя; где тип может быть любым, кроме ссылки и битового поля, причем тип может быть к этому моменту только объявлен, но еще не определен. Звездочка относится непосредственно к имени, поэтому для того, чтобы объявить несколько указателей, требуется ставить ее перед именем каждого. Например, в операторе int *a, b, *c; описываются два указателя на целое с именами a и c, а также целая переменная b. Размер указателя зависит от модели памяти. Можно определить указатель на указатель, и т.д. Можно описать указатель на тип void и присвоить ему значение указателя любого типа, а также сравнивать его с любыми указателями, но перед выполнением каких-либо действий с областью памяти, на которую он ссылается, требуется явным образом преобразовать его к конкретному типу. Указатель может быть константой или переменной, а также указывать на константу или переменную. Рассмотрим примеры: int i;//целая переменная const int ci = 1;//целая константа int* pi;//указатель на целую переменную const int * pci;//указатель на целую константу int* const cp = &i;//указатель-константа на целую переменную Величины типа указатель подчиняются общим правилам определения области действия, видимости и времени жизни.
|