Студопедия — Переменная
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Переменная






Обозначения

 

Комментарии выделяются так:

// комментарий

 

Куски кода на C++ выделяются так:

int a = 5; // кусок кода на C++

 

Текущие значения переменных выделяются так:

// a => 5

 

Краткое описание объявления и примеры использования

 

// переменные

char c = ‘a’;

int a = 5;

float b;

b = 3.14;

a = -1;

 

// переменные-указатели

int *p1;

int *p2 = &a;

int *p3 = p2;

int *p4;

p4 = &a;

p4 = p3;

 

// использование

int a = 5;

// перем. a получает значение 5

int *p = &a;

// переменная-указатель p получает адрес переменной a

// или: переменная-указатель p теперь указывает на переменную a

// *p => 5

int b = *p;

// перем. b получает значение перем., на которую указывает p

// b => 5

*p = 6;

// перем., на которую указывает p, получает значение 6

// *p => 6

// a => 6

// b => 5

 

Если вы не понимаете, как это все работает, то вам придется читать полное описание J.

 

Полное описание

Переменная

Что такое переменная? Переменная – это определенное место в памяти, имеющее имя, по которому мы его используем. Переменная имеет значение (текущее значение), грубо говоря, это то, что записано сейчас по определенному месту в памяти. Переменная также имеет тип, описывающий, какого рода значения в ней хранятся.

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

Прежде чем использовать переменную, ее надо объявить и определить ее тип. Одновременно с этим можно задать начальное значение, а можно установить значение переменной после, в любой момент.

 

float f; // объявляем перем. f типа float

char s = ‘w’; // объяв. перем. s типа char и присв. ей знач. ‘w’

f = -3.2; // перем. f присв. значение -3.2

int a = 5; // объявляем перем. a типа int и присв. ей значение 5

int b = 6; // объявляем перем. b типа int и присв. ей значение 6

int t; // объявляем перем. t типа int

t = a; // переменной t присваиваем значение переменной a

a = b; // переменной a присваиваем значение переменной b

b = t; // переменной b присваиваем значение переменной t

 

Во многих языках это было бы практически все, что можно делать с переменными, как с ними работать. Однако в С++, как в языке низкого уровня, с переменными можно работать и по-другому, а именно – косвенно.

 

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

 

Память

Память – это нумерованная последовательность числовых двоичных байтов. Именно нумерованная (то есть каждый байт имеет номер), именно последовательность (то есть каждый следующий байт имеет номер, отличающийся на единицу), именно двоичных (то есть байт содержит 8 двоичных битов, содержащих, в свою очередь, 0 или 1), именно байтов (то есть можно обратиться только[1] к байту целиком, но не к отдельному биту), и именно числовых (то есть каждый байт представляет из себя число).

Каждый байт этой последовательности имеет свой номер и текущее значение, которое, как несложно догадаться, в двоичном виде представляет из себя число от 00000000 до 11111111, в шестнадцатеричном виде – число от 00 до FF, и в десятичном виде – число от 0 до 255:

 

значение                  
номер                  

 

Как уже говорилось выше, каждая переменная занимает некоторое место в памяти. Разные типы требуют различного количества байтов. Еще раз: переменная – это определенное место в памяти, имеющее имя, по которому мы его используем. Теперь мы можем сказать более точно. Определенное место – это некоторая определенная непрерывная последовательность байтов в памяти:

 

значение                  
номер                  
переменная не занято s a b не занято
тип char int int
значение ‘w’    

 

Что мы здесь видим? Во-первых, все переменные занимают разное количество (подряд идущих!) байтов. Во-вторых, некоторые байты могут быть не заняты, но, смотря только на значения этих байтов, не скажешь, заняты они или нет, и значениями каких типов заняты. Незанятые байты могут иметь произвольные значения, оставшиеся от каких-то переменных, которые там раньше размещались, но теперь не размещаются. Иногда мы такие байты будем помечать символами ‘?’, но надо обязательно держать в уме, что там не вопросы находятся, а какие-то реальные значения.

И, в-третьих, и в самых главных, все переменные хранятся в той же самой памяти, которая состоит из числовых байтов. Внимание, вопрос. Как различные типы данных могут храниться в одной и той же памяти? Как в числовой памяти можно хранить символ ‘w’? Как в двух ячейках, каждая из которых может содержать число от 0 до 255, можно хранить число 258?

Ответы на эти вопросы у вас есть в лекциях. Для каждого типа данных известно, сколько байтов в памяти занимает переменная его типа (для char – один байт, для int – два байта[2], и так далее), и, самое главное, – как любое значение этого типа представить в виде последовательности числовых байтов. Для каждого значения char, например, выделяется один байт, и в этом числовом байте хранится номер этого символа в специальной таблице ascii.

 

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

 







Дата добавления: 2015-08-12; просмотров: 286. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия