ПОНЯТНО О Visual Basic NET (том 3)


           

у которых механизм предоставления памяти


типы, у которых механизм предоставления памяти совсем другой. Разберемся в нем.

2. Массивы. Рассмотрим второй фрагмент. Вот что находится в памяти после выполнения оператора A(2) = 5:







































































































































Адреса



Значения





Адреса



Значения



A



000101



002040







002040



0











002041



0











002042



5















B



000102



002300







002300



0











002301



0











002302



0



На схеме я для наглядности изобразил ячейки в два столбца.

Пояснения: При выполнении операторов

Dim A(2) As Integer

Dim B(2) As Integer

каждой из переменных A и B отводится в памяти одна

ячейка и еще дополнительная область памяти для хранения  элементов массива (по три ячейки, которые заполняются нулями). В этой одной ячейке находится адрес первой ячейки из области памяти или, по-другому, ссылка на эту область памяти. Ссылку еще называют указателем. Вот такой механизм. Таким образом, значением переменной A является совсем не набор из трех чисел, а всего лишь адрес, номер ячейки. Запомните это.

Когда выполняется оператор A(2) = 5,  компьютер, зная, что массив является ссылочным типом, рассматривает значение 002040 в ячейке для переменной A именно, как адрес, а не число типа Integer, и поэтому не пытается записать в эту ячейку число 5, а  отправляется по указанному адресу, где находит три ячейки. В какую из них записать число 5, ему указывает индекс 2.

Рассмотрим, как выполняется оператор B = A.  Вам могло показаться по аналогии с первым фрагментом, что при этом все три числа из области памяти для A копируются в область памяти для B.  Но нет, здесь по своему строгому, но привычному вам закону выполняется оператор присваивания. Закон этот говорит, что значение переменной A должно быть записано в ячейку для значения переменной B. Поскольку значением переменной A является адрес 002040, то он и копируется в ячейку для значения переменной B. Вот что получается:







































































































































Адреса



Значения





Адреса



Значения



A



000101



002040







002040



0











002041



0











002042



5















B



000102



002040





002300



0











002301



0











002302



0

<

Содержание  Назад  Вперед