Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
нечетные.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
59.67 Кб
Скачать

27.Приоритет переменных с файловой и локальной областями действия. Операция уточнения области действия.

В Visual C/C++ имеется четыре спецификатора класса памяти:

Auto, register, static, extern

Спецификатор класса памяти может предшествовать объявлениям переменных и функций, указывая компилятору, как следует хранить переменные в памяти и как получать доступ к переменным или функциям. Переменные, объявленные со спецификаторами auto или register, являются локальными, а со спецификаторами static и extern — глобальными. Память для локальной переменной выделяется заново всякий раз, когда выполнение программы достигает блока, в котором объявлена переменная, и удаляется по завершении выполнения этого блока.Память для глобальной переменной выделяется один раз при запуске программы и удаляется по завершении программы. Указанные четыре спецификатора определяют также область видимости переменных и функций, т.е. часть программы, в пределах которой к идентификатору можно обратиться по имени. На область видимости переменной и функции влияет место ее объявления в программе. Если объявление расположено вне любой функции, то говорят о внешнем уровне объявления. Если же оно находится в теле функции, то говорят о внутреннем уровне объявления. Смысл спецификаторов класса памяти несколько различается в зависимости от того, дается ли объявление переменной или функции и на внешнем или внутреннем уровне объявляется данный идентификатор. Область видимости глобальной переменной распространяется до конца файла. Обращение к переменной не может находиться выше той строки, где она была объявлена.

29.Пространство имен. Операторы namespace и using.

Пространство имен С понятием области действия имени связано понятие пространства имени. Пространством имени называется область программы, в пределах которой это имя должно быть уникальным. Различные категории имён имеют различные пространства имён. К их числу относятся: 1)Пространство имён глобальных объектов. 2)Пространство имен поименованных операторов (или операторов с меткой) - функция. 3)Пространство имён структур, классов, объединений и перечислимых типов зависит от контекста, в котором были объявлены структуры, классы, объединения. 4)Имена элементов структур, классов, объединений и перечислимых данных должны быть уникальны в пределах определения структуры, класса, объединения и перечислимых данных. 5)Имена переменных и функций, имена пользовательских типов должны быть уникальны в области определения: глобальные объекты должны иметь уникальное имя среди всех глобальных объектов и т.д. Пространство имен (namespace) — это способ объединения логически связанных объявлений под общим именем. Пример namespace

#include "iostream.h"

namespace first {int a;float b;}

namespace second {int a;float b;}

int _tmain(int argc, _TCHAR* argv[ ])

{ first::a = 1; second::a = 2; first::b = 1.23;second::b = 4.56;

Cout<<"first::a ="<< first::a<<endl;

Cout<<"second::a ="<<second::a<<endl;

Cout<<"first::b = "<<first::b;

Cout<<"second::b="<<second::b;

return 0;}

Для того, чтобы использовать все имена из пространства имен можно применить директиву using namespace. Пример использования using namespace std:

#include <iostream.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{ cout<<"using namespace std "<<endl;

return 0;}

using namespace std позволяет использовать имена из пространства имен std. std - это имя стандартной библиотеки C++.