тип (*имя) ( список_типов_аргументов );
Например, объявление:
1nt (*fun) (double, double);
задает указатель с именем fun на функцию, возвращающую значение типа int и имеющую два аргумента типа double.
Указатель на объект содержит адрес области памяти, в которой хранятся данные определенного типа (основного или составного). Простейшее объявление указа теля на объект (в дальнейшем называемого просто указателем) имеет вид:
тип *имя:
где тип может быть любым, кроме ссылки (о ссылках рассказывается на с. 57) и битового поля (см. с. 69), причем тип может быть к этому моменту только объяв лен, но еще не определен (следовательно, в структуре, например, может присут ствовать указатель на структуру того же типа).
Звездочка относится непосредственно к имени, поэтому для того, чтобы объявить несколько указателей, требуется ставить ее перед именем каждого из них. На пример, в операторе
1nt *д. Ь. *с;
описываются два указателя на целое с именами а и с, а также целая переменная Ь.
Размер указателя зависит от модели памяти. Можно определить указатель на указатель и т. д.
Указатель на void применяется в тех случаях, когда конкретный тип объекта, ад рес которого требуется хранить, не определен (например, если в одной и той же переменной в разные моменты времени требуется хранить адреса объектов раз личных типов).
Указателю на void можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями, но перед выполнением каких-либо дейст вий с областью памяти, на которую он ссылается, требуется преобразовать его к конкретному типу явным образом (см. с. 231).
Указатель может быть константой или переменной, а также указывать на кон станту или переменную. Рассмотрим примеры:
Как видно из примеров, модификатор const, находящийся между именем указа теля и звездочкой, относится к самому указателю и запрещает его изменение,
const слева от звездочки задает постоянство значения, на которое он указывает. Для инициализации указателей использована операция получения адреса &.
Величины типа указатель подчиняются общим правилам определения области действия, видимости и времени жизни.
Достарыңызбен бөлісу: |