Объявление переменных, указателей и ссылок в С++

Объявление обычных переменных

/*тип данных*/ /*идентификатор*/;

Тип данных может быть абсолютно любой, например: char, int, double, и т.д. Идентификатор должен удовлетворять правилам именования переменных в  C/C++, и не могут быть использованы в одной области переменные с одинаковыми именами. Переменные автоматически не инициализируются значениями, они имеют значение (мусор), которое хранится в памяти по адресу переменной.

Правила именования переменных гласят:
  • имя переменной не должно начинаться с цифры;
  • имя переменной не должно включать следующие символы: /:*?"<>, |.

Объявление указателя

/*тип данных*/ */*идентификатор*/;

Типы указателей

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

Указатель на константные данные

Указатель на константные данные не позволяют модифицировать данные, на которые они ссылаются. Есть два способа объявления таких указателей, главное, чтобы спецификатор const предшествовал символу *, так что любое из следующих двух объявлений будет корректно.

const type * variable;

или

type const * variable;

где,

  • type — тип данных;
  • variable — имя указателя.

Адрес памяти хранится в указателе, который ссылается на константные данные, это специфицирует ключевое слово const. Таким образом, значение указателя нельзя изменить, если вы попытаетесь это сделать, компилятор выдаст ошибку.

Константный указатель на неконстантные данные

Такие указатели имеют постоянный адрес памяти, это специфицирует ключевое слово const, объявленное после символа *. Такие указатели должны быть сразу же инициализированы адресом.

type * const identifier = /*некоторый адрес в памяти*/;

где,

  • type — тип данных;
  • identifier — имя указателя.
Константный указатель на константные данные

Для объединения двух режимов указателей, вы можете просто включить const для данных, на которые указывает указатель и для адреса, поставив const как до, так и после символа *:

const type * const identifier = /*адрес в памяти*/;

или так

type const * const identifier = /*адрес в памяти*/;

Такие указатели не позволяют изменять данные на которые они указывают и не позволяют менять адрес в памяти.


Объявление ссылки

Примечание: ссылки — механизм присущий языку программирования С++, их нет в стандартном языке C.

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

type & identifier = varname;

где,

  • type — тип данных;
  • identifier — имя ссылки;
  • varname — имя переменной, на которую ссылается ссылка.

Давайте посмотрим пример использования ссылочной переменной.

int var;
int & varRef = var; // сейчас ссылка varRef эквивалентна переменной var

Ссылочная переменная, при объявлении, всегда должна инициализироваться. Ссылки не могут иметь значение NULL. Ссылки также могут быть использованы в качестве параметра функции:

void function(double & dobRef); // ссылка, в качестве параметра функции

Когда переменная передается в функцию по ссылке, то значение этой переменной не копируется, просто, ссылочная переменная ссылается на значение в памяти. Это означает, что любые модификации с ссылочной переменной могут реально изменить исходное значение. В целях предотвращения изменения в оригинальной переменной, сохраняя при этом повышенную производительность (ведь значение не копируется), можно ссылаться со спецификатором const. Смотрим пример:

void function(const double & dobRef); // константная ссылка, в качестве параметра функции
Объявление ссылки в классе
class Name
{
   char & memRef; // ссылка на участок памяти
};

В этом случае, ссылка должна быть инициализирована в конструкторе класса. Обратите внимание, что ссылка в классе является потенциально опасной, потому как срок службы объекта не регулируется классом. Часто, такая ссылка, в классе используется, для хранения адреса памяти чтобы сделать копию значения или явно инициализировать указатель. Подробно по ссылкам вы можете прочитать статью: Использование ссылок в С++.

Автор: Marienko L.
Дата: 02.12.2012
Поделиться:

Комментарии

  1. sercher

    мне в статье не хватает места объявления переменных, а также областей видимости этих объявлений

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.