Указатели и массивы Указатели


unsigned long 1nt A = 0Xcc77ffaa



бет6/12
Дата06.01.2022
өлшемі1,96 Mb.
#15493
түріУказатель
1   2   3   4   5   6   7   8   9   ...   12
Байланысты:
Указатели и массивы

unsigned long 1nt A = 0Xcc77ffaa:
unsigned short int* pint = (unsigned short int*) &A:
unsigned char* pchar = (unsigned char *) &A:
printfC I ^x I ^x I ^x I". A. *pint. *pchar):
return 0:
}
на IBM РС-совместимом компьютере выведет на экран строку^:
I cc77ffaa | ffaa | аа |
Значения указателей pint и pchar одинаковы, но разадресация pchar дает в резуль­ тате один младший байт по этому адресу, а pint — два младших байта.


  1. приведенном выше примере при инициализации указателей были использова­ ны операции приведения типов. Синтаксис операции явного приведения типа прост: перед именем переменной в скобках указывается тип, к которому ее требу­ ется преобразовать. При этом не гарантируется сохранение информации, поэто­ му в общем случае явных преобразований типа следует избегать. Подробнее опе­ рация приведения типов рассмотрена на с. 231.

При смешивании в выражении указателей разных типов явное преобразование типов требуется для всех указателей, кроме void*. Указатель может неявно пре­ образовываться в значение тина boo! (например, в выражении условного опера­ тора), при этом ненулевой указатель преобразуется в true, а нулевой в false.


Присваивание без явного приведения типов допускается в двух случаях:


  • указателям типа void*:




  • если тип указателей справа и слева от операции присваивания один и тот же.

Старые версии компилятора могут выдать в результате строку | ffaa | сс77 | ffaa



Таким образом, неявное преобразование выполняется только к типу void*. Зна­ чение О неявно преобразуется к указателю на любой тип. Присваивание указате­ лей на объекты указателям на функции (и наоборот) недопустимо. Запрещено и присваивать значения указателям-константам, впрочем, как и константам любо­ го типа (присваивать значения указателям на константу и переменным, на кото­ рые ссылается указатель-константа, допускается).


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   12




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет