Информатика. Общая информатика. Основы языка C++. Мамонова Т.Е. - 147 стр.

UptoLike

Составители: 

printf(«\n%x\t%i»,pi,*pi);
printf(«\n%x\t%c»,pc,*pc);
printf(«\n%x\t%f»,pf,*pf);
При выполнении программы, представленной в примере 51, полу-
чатся следующие результаты:
66fd9c 123
66fd9c {
66fd9c 0.000000
Т.е. адрес у трех указателей один и тот же, но при разыменовании
получаются разные значения в зависимости от типа указателя.
В примере при инициализации указателя была использована опера-
ция приведения типов. При использовании в выражении указателей
разных типов, явное преобразование требуется для всех типов, кроме
void*. Указатель может неявно преобразовываться в значения типа bool,
при этом ненулевой указатель преобразуется в true, а нулевой в false.
Арифметические операции применимы только к указателям одного
типа.
1. Инкремент увеличивает значение указателя на величину
sizeof(тип).
Пример 52
char *pc;
int *pi;
float *pf;
...
pc++;//значение увеличится на 1
pi++;//значение увеличится на 4
pf++;//значение увеличится на 4
2. Декремент уменьшает значение указателя на величину
sizeof(тип).
3. Разность двух указателей это разность их значений, деленная
на размер типа в байтах.
Пример 53
int a=123,b=456,c=789;
int*pi1=&a;
int *pi2=&b;
int*pi3=&c;
printf(«\n%x»,pi1-pi2);
printf(«\n%x»,pi1-pi3);
Результат
147