суббота, 27 августа 2011 г.

Указатели (динамическая память 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;
}

Комментариев нет:

Отправить комментарий