Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет49/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   45   46   47   48   49   50   51   52   ...   256
2.1.2 Объекты и адреса 
Можно выделять память для "переменных", не имеющих имен, и использовать эти переменные. 
Возможно даже присваивание таким странно выглядящим "переменным", например, *p[a+10]=7. 
Следовательно, есть потребность именовать "нечто хранящееся в памяти". Можно привести 
подходящую цитату из справочного руководства: "Любой объект - это некоторая область памяти, а 
адресом называется выражение, ссылающееся на объект или функцию" ($$R.3.7). Слову адрес (lvalue - 
left value, т.е. величина слева) первоначально приписывался смысл "нечто, что может в присваивании 
стоять слева". Адрес может ссылаться и на константу (см. $$2.5). Адрес, который не был описан со 
спецификацией const, называется изменяемым адресом. 
2.1.3 Время жизни объектов 
Если только программист не вмешается явно, объект будет создан при появлении его определения и 
уничтожен, когда исчезнет из области видимости. Объекты с глобальными именами создаются, 
инициализируются (причем только один раз) и существуют до конца программы. Если локальные 
объекты описаны со служебным словом static, то они также существуют до конца программы. 
Инициализация их происходит, когда в первый раз управление "проходит через" описание этих 
объектов, например: 
int a = 1; 
void f() 

int b = 1; 
// инициализируется при каждом вызове f() 
static int c = a; 
// инициализируется только один раз 
cout << " a = " << a++ 


Бьерн Страуструп.
Язык программирования С++ 
 
49 
<< " b = " << b++ 
<< " c = " << c++ << '\n'; 

int main() 

while (a < 4) f(); 

Здесь программа выдаст такой результат: 
a = 1 b = 1 c = 1 
a = 2 b = 1 c = 2 
a = 3 b = 1 c = 3 
''Из примеров этой главы для краткости изложения исключена макрокоманда #include . Она 
нужна лишь в тех из них, которые выдают результат. 
Операция "++" является инкрементом, т. е. a++ означает: добавить 1 к переменной a. 
Глобальная переменная или локальная переменная static, которая не была явно инициализирована, 
инициализируется неявно нулевым значением (#2.4.5). Используя операции new и delete, программист 
может создавать объекты, временем жизни которых он управляет сам (см. $$3.2.6). 


Достарыңызбен бөлісу:
1   ...   45   46   47   48   49   50   51   52   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет