Типы данных в Си++ C++
Primary tabs
Вообще типы данных в си++ бывают самые разные)) (в связи тем полезно причитать эту замечательную статью)
Для начала ,следует упомянуть о литералах - это всевозможное данные ,находящиеся в тексте программы =
Когда в программе встречается некоторое число, например 1, то это число называется литералом, или литеральной константой. Константой, потому что мы не можем изменить его значение, и литералом, потому что его значение фигурирует в тексте программы.
Литерал является неадресуемой величиной: хотя реально он, конечно, хранится в памяти машины, нет никакого способа узнать его адрес. Каждый литерал имеет определенный тип. Так, 0 имеет тип int, 3.14159 – тип double.
Переменные
Опять цитата =
Переменная, или объект – это именованная область памяти, к которой мы имеем доступ из программы; туда можно помещать значения и затем извлекать их. Каждая переменная С++ имеет определенный тип, который характеризует размер и расположение этой области памяти, диапазон значений, которые она может хранить, и набор операций, применимых к этой переменной.
вот пример определения переменных ( пример определения пяти объектов разных типов:) =
int student_count; double salary; bool on_loan; strins street_address; char delimiter;
Переменная, как и литерал, имеет определенный тип и хранит свое значение в некоторой области памяти. Адресуемость – вот чего не хватает литералу.
С переменной ассоциируются две величины:
- собственно значение, или r-значение (от read value – значение для чтения), которое хранится в этой области памяти и присуще как переменной, так и литералу;
- значение адреса области памяти, ассоциированной с переменной, или l-значение (от location value – значение местоположения) – место, где хранится r-значение; присуще только объекту
Соответственно - l-значение - заставляет нас вспомнить о том, что существуют указатели=
Указатель – это объект, содержащий адрес другого объекта и позволяющий косвенно манипулировать этим объектом.
получение значение указателя возможно, например, таким способом=
// pi2 инициализирован адресом ival int *pi2 = &ival;
Подробнее опять же читайте ранее указанную статью.
Тема "тип данных" всё-таки довольна обширна - о чём и говорит объём страницы, доступный по последней ссылке, но е
сли говорить об ответе на экзамене (зачёте), то я бы безусловно ответил(/попросил бы рассказать студента - если был бы препом))) бы ещё про =
Ссылочный тип данных
Прежде всего - не путаем с указателями (ибо такая путаница встречается в некоторых умах))
Ссылочный тип, иногда называемый псевдонимом, служит для задания объекту дополнительного имени. Ссылка позволяет косвенно манипулировать объектом, точно так же, как это делается с помощью указателя. Однако эта косвенная манипуляция не требует специального синтаксиса, необходимого для указателей.
Обычно ссылки употребляются как формальные параметры функций. В этом разделе мы рассмотрим самостоятельное использование объектов ссылочного типа.
Ссылочный тип обозначается указанием оператора взятия адреса (&) перед именем переменной. Ссылка должна быть инициализирована. Например:
int ival = 1024; // правильно: refVal - ссылка на ival int &refVal = ival; // ошибка: ссылка должна быть инициализирована int &refVal2;
То есть - ссылка должна быть инициализирована не адресом объекта - а его значением
Таким объектом вполне может быть и указатель:
int ival = 1024; // ошибка: refVal имеет тип int, а не int* int &refVal = &ival; int *pi = &ival; // правильно: ptrVal - ссылка на указатель int *&ptrVal2 = pi;
Определив ссылку, вы уже не сможете изменить ее так, чтобы работать с другим объектом (именно поэтому ссылка должна быть инициализирована в месте своего определения)
Все операции со ссылками реально воздействуют на адресуемые ими объекты. В том числе и операция взятия адреса.
Подробнее о ссылках - опять же здесь
- Log in to post comments
- 4093 reads