Составители:
Рубрика:
67
#include<iostream.h>
#include <conio.h>
main()
{
int x; // x - целое число
int *p ,*p1; // указывают на целые числа
clrscr(); // очистка экрана
p = &x; // указателю присваивается адрес целого числа х
p1=p+3;
cout<<"\nНачальное значение р:"<<p<<"\n";
cout<<"Конечное значение ++р:"<<++p<<"\n";
cout<<"Конечное значение --р:"<<--p<<"\n";
cout<<"Конечное значение р1:"<<p1<<"\n";
cout<<"\n\n";
cout<<"\nНажмите любую клавишу ...";
getch();
return 0;
}
Результаты работы программы:
Начальное значение р: 0xfff4
Конечное значение ++р: 0xfff6
Конечное значение
--р: 0xfff4
Конечное значение р1: 0xfffa
Рис. 10.2
По результатам выполнения этой программы мы видим, что при операции
++р значение указателя р увеличивается не на 1, а на 2. И это правильно, так
как новое значение указателя должно указывать не на следующий адрес, а на
адрес следующего целого. А целое, как
известно, занимает два байта памяти.
Если бы базовый тип указателя был не int, a double, то были бы напечатаны ад-
реса, отличающиеся на 8, именно столько байт памяти занимает переменная
типа double, т.е. при каждой операции ++р значение указателя будет увеличи-
ваться на количество байт, занимаемых переменной базового типа указателя, а
при
операции --р соответственно уменьшаться. К указателям можно прибавлять
или вычитать некоторое целое. В данной программе указатель р1 представляет
собой сумму значений указателя р и целого числа 3. Результат равен 0xfffa, т.е.
увеличился на 6 по сравнению с исходным значением указателя р. Общая фор-
мула для вычисления значения указателя после выполнения
операции p = p +
+ n; будет иметь вид < p > = < p > + n*< количество байт памяти базового типа
указателя>. Можно так же вычитать один указатель из другого. Так, если р и р1
– указатели на элементы одного и того же массива, то операция р – р1 дает та-
кой же результат, как и вычитание соответствующих индексов массива. Указа-
тели можно сравнивать, при этом применимы все 6 операций:
<, >, <=, >=, = , == , !=.
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »