С указателями можно использовать только четыре арифметических оператора: ++, --, +, -.
Например если 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; }
Комментариев нет:
Отправить комментарий