Язык программирования C

Скачать в pdf «Язык программирования C»


Целочисленное константное выражение со значением 0 или такое же выражение, приведенное к типу void *, можно преобразовать в указатель любого типа операциями приведения, присваивания и сравнения. Результатом будет нулевой указатель NULL, который равен любому другому нулевому указателю того же типа, но не равен никакому указателю на функцию или объект.


Допускаются и некоторые другие преобразования с участием указателей, но в них может присутствовать зависимость результата от реализации. Такие преобразования должны указываться явно — с помощью операции приведения типа (см. разделы А.7.5 иА.8.8).


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


Объект целочисленного типа можно явно преобразовать в указатель. Если целое число получено из указателя и имеет достаточно большой размер, такое преобразование всегда даст тот же указатель; в противном случае результат зависит от реализации.


Указатель на один тип можно преобразовать в указатель на другой тип. Если исходный указатель не ссылается на объект, должным образом выровненный по границам слов памяти, в результате может возникнуть исключительная ситуация, связанная с адресацией. Если требования к выравниванию у нового типа менее строгие или такие же, как у первоначального типа, то гарантируется, что преобразование указателя к другому типу и обратно не изменит его. Само понятие “выравнивания” зависит от реализации, однако в любой реализации объекты типа char предъявляют наименее строгие требования к выравниванию. Как описано в разделе А.6.8, указатель может также преобразовываться в void * и обратно без изменения своего значения.


Указатель можно преобразовать в другой указатель того же типа с добавлением или удалением модификаторов (разделы А.4.4, А.8.2) того типа объектов, на которые он указывает. Новый указатель, полученный путем добавления модификатора, имеет то же значение, но с дополнительными ограничениями, внесенными новыми модификаторами. Удаление модификатора у объекта приводит к тому, что восстанавливается действие его первоначальных модификаторов, заданных в объявлении этого объекта.

Скачать в pdf «Язык программирования C»