4 СЕКСТРАДА - имя, адрес, значение, тип

Как и было обещано в посте In Da Programming: Names, следующий пост будет посвящен чести переменных, и поехали.

Независимо от того, что обычно делает программист и сколько пропущенных описаний переменных есть в Интернете, правда в том, что это абстракция ячейки памяти компьютера или совокупности ячеек. В предыдущем предложении я намеренно повернул камеру к программистам на секунду, потому что большую часть времени они думают о переменных как о названиях мест в памяти, однако в действительности все гораздо шире и разнообразнее.

Начнем с небольшой истории, никого бы не убил. В старые, но золотые времена, когда королем был машинный язык, все было абсолютным числовым адресом памяти. Слава богу, сборка разрушила эту монархию и добавила программированию читаемость и возможность записи. По сути, теперь абсолютные числовые адреса памяти были заменены именами.

Переменную можно также назвать ПОЛОМ АТРИБУТОВ (я знаю, что это звучит как 50 оттенков серого, но это совершенно разные вещи). А теперь посмотрим, что это такое:

  1. Имя
  2. Адрес
  3. Ценность
  4. Тип
  5. Продолжительность жизни
  6. Сфера

Вы можете подумать, что из простого слова, как мы создали гору, но на самом деле все вышеупомянутые письменные примеры еще больше поясняют эту тему. Некоторые из них можно объяснить в предложениях, а для некоторых из них потребуется больше времени, чтобы рассказать о них. В этом посте мы рассмотрим имя, адрес, адрес, значение и тип. Давайте начнем.

Имя

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

Адрес

Начнем с официального описания.

Адрес переменной - это адрес машинной памяти, с которым она связана.

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

Пример: предположим, что у вас есть подпрограмма и у нее есть локальная переменная, которая выделяется из стека времени выполнения при вызове подпрограммы. В такой ситуации разные вызовы могут привести к тому, что эта переменная будет иметь разные адреса, и этот простой процесс можно понять как разные экземпляры одной и той же переменной.

Адрес переменной время от времени называется l-значением, и причина обычно объясняется следующим образом.

адрес - это то, что требуется, когда имя переменной появляется в левой части присваивания.

Как мы уже говорили выше, как переменная может каждый раз иметь разные адреса, теперь пора поговорить о переменных, которые имеют одинаковые адреса. Между прочим, это называется псевдонимами, а эти переменные - псевдонимами.

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

  • Пример: предположим, что у вас есть две переменные total и sum, и, к счастью, они являются псевдонимами, что означает, что любое изменение значения total также изменит значение суммы, и это верно наоборот.

Минусы: всегда нужно помнить, что эти две переменные указывают на один и тот же адрес памяти, и теперь подумайте, что у вас есть не 2, а 100 таких элементов, и вы вернулись с праздника. Ура, знаю, это может быть кошмар.

Есть много способов создания псевдонимов. Например, в C и C ++ для этого могут использоваться типы объединения.

Кроме того, две переменные-указатели являются псевдонимами, если они указывают на одну и ту же ячейку памяти. То же верно и для ссылочных переменных. Такой вид псевдонимов - просто побочный эффект природы указателей и ссылок. Когда указатель C ++ установлен так, чтобы указывать на именованную переменную, указатель при разыменовании и имя переменной являются псевдонимами.

Тип

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

  • Пример: знаковый тип int в Java, включающая нижняя граница - 2147483648, а включающая верхняя граница - 2147483647. Тип позволяет выполнять арифметические операции, такие как сложение, вычитание, умножение , деление и модуль.

Значение

Значение можно легко понять как элемент, хранящийся в контейнере переменных, но если вы хотите получить более подробное описание, прочтите приведенное ниже

Значение переменной - это содержимое ячейки памяти или ячеек, связанных с переменной.

Ячейки, о которых говорилось выше, больше похожи на ячейки abtract, а не на физические. Физические ячейки или индивидуально адресуемые блоки большинства современных компьютерных запоминающих устройств представляют собой 8-битные блоки, называемые байтами, что слишком мало для большинства программных переменных (int сам занимает минимум 4 бита).

  • Пример: хотя значения плавающей точки могут занимать четыре физических байта в конкретной реализации конкретного языка, значение плавающей точки считается занимающим одну абстрактную ячейку памяти.

Считается, что значение каждого простого неструктурированного типа (целое 4 байта) занимает одну абстрактную ячейку.

Следовательно, мы можем сказать, что термин ячейка памяти будет означать абстрагированную ячейку памяти.

Значение имеет второе имя, как мы видели в адресе. Его также называют r-значением, потому что это то, что требуется, когда имя переменной появляется в правой части оператора присваивания.

Последний пункт маркера заключается в том, что для доступа к r-значению сначала необходимо определить l-значение.

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

  1. Себеста, Р. У. (нет данных). Имена, привязки и области действия. В книге Концепции языков программирования (12-е изд., Стр. 200–202).