Технология программирования. Базовые конструкции C/C++. Липачев Е.К. - 71 стр.

UptoLike

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

71
Вычитание указателей
Можно вычитать два указателя одного и того же типа. Результат этой
операции количество данных, уместившихся между адресами, являющихся
значениями этих указателей.
Пример. Выделяется блок для размещения 50 целых чисел.
Указателю ps присвоено значение p+10, т.е. этот указатель ссылается на 10
блок данных, а значения адресов отличаются на число 40 (28 в
шестнадцатеричной системе счисления). Указатель pf ссылается на 40 блок
данных. Из одного указателя вычитается другой.
int *p, *ps, *pf;
p = new int [50];
for (int i=0;i<50;i++) *(p+i) = i * 2;
ps=p+10; pf=p+40;
cout<<"\n *ps="<<*ps<<" *pf="<<*pf;
cout<<"\n p="<<p<<" ps="<<ps<<" pf="<<pf;
cout<<"\n ps-p= "<<ps-p<<" pf-ps= "<<pf-ps;
Присваивание указателей
Переменной–указателю можно присвоить значение другого указателя
того же типа данных, а также, адрес переменной того же типа.
Пример. Операция присваивания указателей, в результате которой оба
указателя px и py ссылаются на область памяти, в которой размещена
переменная x.
int x=1000; int y=2000;
int *px=&x; int *py=&y;
cout<<"\n px= "<<px<<" *px= "<<*px;
cout<<"\n py= "<<py<<" *py= "<<*py;
py=px; /* указателю присвоили значение другого
указателя */
cout<<"\n py= "<<py<<" *py= "<<*py;
Вычитание указателей
     Можно вычитать два указателя одного и того же типа. Результат этой
операции – количество данных, уместившихся между адресами, являющихся
значениями этих указателей.
     Пример.     Выделяется    блок для размещения 50 целых чисел.
Указателю ps присвоено значение p+10, т.е. этот указатель ссылается на 10
блок данных, а значения адресов отличаются на число            40 (28 в
шестнадцатеричной системе счисления). Указатель pf ссылается на 40 блок
данных. Из одного указателя вычитается другой.
int *p, *ps, *pf;
p = new int [50];
for (int i=0;i<50;i++) *(p+i) = i * 2;
ps=p+10; pf=p+40;
cout<<"\n *ps="<<*ps<<" *pf="<<*pf;
cout<<"\n p="<