С указателями можно использовать только четыре арифметических оператора: ++, --, +, -.
Например если q1 указатель на int переменную с текущим значением 100 (это адрес).
После выполнения инструкции (в 32-разрядной среде) q1++; содержимое указателя q1 станет равным 104, а не 101. Происходит это из-за того, что при каждом инкрементировании, указатель q1 будет указывать на следующее int значение. (Для операции декремента - аналогично только в другую сторону).
Каждый раз когда указатель инкрементируется, он будет указывать на область памяти, содержащую следующий элемент базового типа этого указателя. При декрементировании - на предыдущий.
Примечание: указатель принимает значение 104, потому что переменная типа int занимает 4 байта. Для указателей на символьные значения результат операций ++ и -- будет таким же, как при стандартной арифметике, потому что символы занимают только 1 байт.
Небольшой пример работы с указателями.
Например если q1 указатель на int переменную с текущим значением 100 (это адрес).
После выполнения инструкции (в 32-разрядной среде) q1++; содержимое указателя q1 станет равным 104, а не 101. Происходит это из-за того, что при каждом инкрементировании, указатель q1 будет указывать на следующее int значение. (Для операции декремента - аналогично только в другую сторону).
Каждый раз когда указатель инкрементируется, он будет указывать на область памяти, содержащую следующий элемент базового типа этого указателя. При декрементировании - на предыдущий.
Примечание: указатель принимает значение 104, потому что переменная типа int занимает 4 байта. Для указателей на символьные значения результат операций ++ и -- будет таким же, как при стандартной арифметике, потому что символы занимают только 1 байт.
Небольшой пример работы с указателями.
#include < iоstream>
using namespace std;
int main()
{
int *i, j[5];
double *f, g[5];
int x;
i = j;
f = g;
for (x=0; x<5; x++)
cout << i+x << ' ' << f+x << '\n';
return 0;
}
Комментариев нет:
Отправить комментарий