Основы программирования на языке C

Явные преобразования типов


Выражения могут быть преобразованы из одного типа в другой явным указанием. Выражение E может быть явно преобразовано к типу имя-типа с помощью записи вида

(имя - типа) Е

где имя типа представляется в форме

указатель-типа абстрактный-описатель

Абстрактный описатель аналогичен описателю, за исключением того, что он не содержит определяемого или описываемого идентификатора. Смысл слов имя-типа, представляемого в форме

Т абстрактный описатель

где Т является указателем типа, может быть определен одним из таких способов:

  • форма абстрактного описателя - смысл слов "Т абстрактный описатель";
  • пустой (абстрактный описатель) - абстрактный описатель типа Т;
  • *(абстрактный описатель) - указатель на тип Т;
  • абстрактный описатель ( ) - функция, возвращающая значение типа Т;
  • абстрактный описатель [n] - массив с n элементами типа Т, n - выражение с постоянным значением;

Приведем примеры явного преобразования. Предположим, что даны следующие определения и описания:

int i; char *pc, *name; char *calloc( ), *strcpy( );

тогда можно привести следующие примеры явных преобразований типов:

(char) i - преобразует значение типа int в значение типа char.

pc=(char *) 0777 - преобразует восьмеричный литер 0777 в значение указателя на знак таким образом, что оно может быть присвоено переменной "pc".

(emp *) calloc(1,sizeof(emp)) - преобразует значение "знакового" указателя, возвращаемого функцией calloc, в значение указателя emp.

(void) strcpy(name,"gehani") - опускает значение, возвращенное функцией strcpy.



Содержание раздела