Типы данных в Си++ C++

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

Для начала ,следует упомянуть о литералах - это всевозможное данные ,находящиеся в тексте программы =

Когда в программе встречается некоторое число, например 1, то это число называется литералом, или литеральной константой. Константой, потому что мы не можем изменить его значение, и литералом, потому что его значение фигурирует в тексте программы.
Литерал является неадресуемой величиной: хотя реально он, конечно, хранится в памяти машины, нет никакого способа узнать его адрес. Каждый литерал имеет определенный тип. Так, 0 имеет тип int, 3.14159 – тип double.

подробнее о них читайте здесь

Переменные

Опять цитата =

Переменная, или объект – это именованная область памяти, к которой мы имеем доступ из программы; туда можно помещать значения и затем извлекать их. Каждая переменная С++ имеет определенный тип, который характеризует размер и расположение этой области памяти, диапазон значений, которые она может хранить, и набор операций, применимых к этой переменной.

вот пример определения переменных ( пример определения пяти объектов разных типов:) =

int student_count;
double salary;
bool on_loan;
strins street_address;
char delimiter;

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

  1. собственно значение, или r-значение (от read value – значение для чтения), которое хранится в этой области памяти и присуще как переменной, так и литералу;
  2. значение адреса области памяти, ассоциированной с переменной, или 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;

Определив ссылку, вы уже не сможете изменить ее так, чтобы работать с другим объектом (именно поэтому ссылка должна быть инициализирована в месте своего определения)

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

[вопросы и ответы по Си++ (ФКН ВГУ)]