Как настроить IPython для использования gvim в Windows?

'increment1 (int & amp; value) `принимает' ссылку на l-значение '. До C ++ 11 мы узнали только о «ссылках». Все ссылки были на l-значения.

Что такое l-значение? Упрощенное определение l-значения - это то, что компилятор может предоставить адрес. Таким образом, переменная, такая как value, имеет физическое место хранения (при условии, что ее местоположение в памяти не было оптимизировано).

Скаляр, такой как 5 или даже сумма двух переменных, например, x + y не имеют областей памяти. Компилятор не хранит 5 в памяти. Скорее, он перемещает 5 в место хранения для number. Компилятор не хранит x + y как область памяти. Опять же, в упрощенном виде 5 - это понятие, а (x + y) - это понятие - это r-значения. Ссылки на R-значения являются вторым типом ссылки [здесь не обсуждается].

Возвращаясь к вашему превосходному примеру, int &value описывает ссылку на значение l, потому что value относится к месту в памяти.

Функция main () (при условии отсутствия оптимизации)

  1. объявляет number как int и выделяет память для числа. В большинстве 32-битных и 64-битных систем для байта выделяется 4 байта памяти.
  2. 5 представляет собой R-значение. Компилятор создает команду перемещения для перемещения 5 в ячейку памяти для номера.
  3. main() теперь вызывает increase1(), передавая место хранения номера. Переменная передается по ссылке, что означает, что адрес передается в increase1. main() знает, как передать адрес, потому что `increment1 () принимает ссылку на l-значение.
  4. increase1() получает адрес числа и разыменовывает его, чтобы получить значение 5, добавляет один к разыменованному указателю, а затем сохраняет результат обратно в местоположение, указанное как number.

Ссылки на L-значения позволяют функции вызываемого напрямую изменять хранилище, принадлежащее вызывающему.

Обратите внимание, что адреса хранения передаются. Адреса могут быть из стека main () или из кучи (выделенной новым). В этом примере main () выделяет number из стека, но не обязательно из стека.

Очень скучный способ сказать, что ссылка на l-значение будет передаваться с использованием адресов, если только компилятор не признает, что он может сделать это быстрее посредством оптимизации. Если компилятор оптимизирует фактическое прохождение ссылок, логическое понимание все равно будет верным.

7
задан elifiner 17 March 2009 в 18:33
поделиться

1 ответ

Установка переменной среды РЕДАКТОРА к 'gvim-f', кажется, работает.

set EDITOR=gvim -f
9
ответ дан 6 December 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: