Чтение онлайн

на главную

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

"King

Canute" // ошибка: переход на новую строку в строковом литерале

"King\nCanute" // OK: правильный переход на новую строку

Два строковых литерала, разделенных только одним пробелом, считаются одним строковым литералом. Рассмотрим пример.

"

King" "Canute" // эквивалентно "KingCanute" (без пробела)

Обратите внимание на то, что специальные

символы, такие как
\n
, могут входить в строковые литералы.

A.2.6. Указательные литералы

Существует только один указательный литерал (pointer literal): нулевой указатель (

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

t* p1 = 0; // OK: нулевой указатель

int* p2 = 2–2; // OK: нулевой указатель

int* p3 = 1; // ошибка: 1 — int, а не указатель

int z = 0;

int* p4 = z; // ошибка: z — не константа

В данном случае значение

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

В языке C++ (но не в языке C, поэтому будьте осторожны с заголовками языка C) литерал

NULL
по определению равен
0
, поэтому можно написать следующий код:

int* p4 = NULL; // ( при правильном определении литерала NULL)

// нулевой указатель

В языке C++0x нулевой указатель будет обозначаться ключевым словом

nullptr
. А пока рекомендуем использовать для этого число
0
.

A.3. Идентификаторы

Идентификатор (identifier) — это последовательность символов, начинающаяся с буквы или знака подчеркивания, за которыми следуют (или не следуют) буквы, цифры или знаки подчеркивания (в верхнем или нижнем регистре).

int foo_bar; // OK

int FooBar; // OK

int foo bar; // ошибка: пробел не может использоваться

// в идентификаторе

int foo$bar; // ошибка: символ $ не может использоваться

// в идентификаторе

Идентификаторы, начинающиеся со знака подчеркивания или содержащие двойной символ подчеркивания, резервируются для использования компилятором; не используйте их. Рассмотрим пример.

int _foo; // не рекомендуем

int foo_bar; // OK

int foo__bar; // не рекомендуем

int foo_; // OK

A.3.1.

Указательные литералы

Ключевые слова (keywords) — это идентификаторы, используемые самим языком для выражения языковых конструкций.

A.4. Область видимости, класс памяти и время жизни

Каждое имя в языке C++ (за исключением имен препроцессора; см. раздел A.17) имеет определенную область видимости (scope); иначе говоря, существует область текста, в которой его можно использовать. Данные (объекты) хранятся в памяти; вид памяти, используемой для хранения объекта, называется классом памяти (storage class). Время жизни (lifetime) объекта отсчитывается от момента его инициализации до момента окончательного уничтожения.

A.4.1. Область видимости

Существует пять видов областей видимости (см. раздел 8.4).

Глобальная область видимости (global scope). Имя находится в глобальной области видимости, если оно объявлено вне языковой конструкции (например, вне класса или функции).

Область видимости пространства имен (namespace scope). Имя находится в области видимости пространства имен, если оно определено в пространстве имен и вне какой-либо языковой конструкции (например, вне класса и функции). Формально говоря, глобальная область видимости — это область видимости пространства имен с “пустым именем”.

Локальная область видимости (local scope). Имя находится в локальной области видимости, если она объявлена в функции (включая параметры функции).

Область видимости класса (class scope). Имя находится в области видимости класса, если оно является именем члена этого класса.

Область видимости инструкции (statement scope). Имя находится в области видимости инструкции, если оно объявлено в части (

...
) инструкции
for
,
while
,
switch
или
if
.

Область видимости переменной распространяется (исключительно) до конца инструкции, в которой она объявлена. Рассмотрим пример.

for (int i = 0; i<v.size; ++i) {

// переменная i может быть использована здесь

}

if (i < 27) // переменная i из инструкции for вышла из области

// видимости

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

Поделиться:
Популярные книги

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Пистоль и шпага

Дроздов Анатолий Федорович
2. Штуцер и тесак
Фантастика:
альтернативная история
8.28
рейтинг книги
Пистоль и шпага

Как я строил магическую империю 2

Зубов Константин
2. Как я строил магическую империю
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю 2

Все не так, как кажется

Юнина Наталья
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Все не так, как кажется

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Менталист. Эмансипация

Еслер Андрей
1. Выиграть у времени
Фантастика:
альтернативная история
7.52
рейтинг книги
Менталист. Эмансипация

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Лапочки-дочки из прошлого. Исцели мое сердце

Лесневская Вероника
2. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Лапочки-дочки из прошлого. Исцели мое сердце

Сопряжение 9

Астахов Евгений Евгеньевич
9. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
технофэнтези
рпг
5.00
рейтинг книги
Сопряжение 9

Назад в СССР: 1984

Гаусс Максим
1. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
4.80
рейтинг книги
Назад в СССР: 1984

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Шипучка для Сухого

Зайцева Мария
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Шипучка для Сухого