C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 14 - Область видимости. Продолжение 1 / MSDN rus / Visual C++

Шаг 14 - Область видимости. Продолжение 1

Давайте разбираться дальше. Сколько уровней видимости мы можем создать используя функции ??? Только один !!! Это не значит, что их нельзя больше создать. Можно. Уровень реализации функции в CPP один. Нельзя писать код подобный этому.

int i;

void main()
{
	i=5;
	void inf()
	{
		i=7;
	}
}

Зато такой можно:

int i;

void main()
{
	i=5;
}

void inf()
{
	i=7;
}

Внимание не путайте с последовательностью вызова функций !!! Это не одно и тоже. Мы говорим про уровни видимости. Получается глобально, что у нас есть всего две области определений и реализаций.

СPP файл
Область функции ограниченная { и }

Вот картинка, она поясняет ситуацию:

14.gif (1938 b)

Уровень вложения функций один. То есть уровень CPP и уровень функций, которые параллельны. Помните я говорил, что объявление должно быть выше ??? Можно это проверить, этот код даст ошибку.

void main()
{
	i=5;
}

int i;

void inf()
{
	i=7;
}

Переменная i будет видна только в inf и выше. Все, что объявлено выше функций видно везде, остальное в порядке объявления. Как же ведут себя объекты объявленные внутри функций. Всё, что объявленно внутри функций видно только внутри самой функции. Вот этот код тоже ошибочный.

void main()
{
	int i;
	i=5;
}

void inf()
{
	i=7;
}

Нельзя увидеть переменную за пределами области, в которой она объявлена. Только в подчиненых областях. Вывод, что внутри функции можно давать одинаковые имена и они не будут вступать в конфликт. Действия над одной из переменных в одной функции не будет влиять на другую.

void main()
{
	int i;
	i=5;
}

void inf()
{
	int i;
	i=7;
}

Если есть необходимость, чтобы каждая функция влияла на одну переменную объявите её на уровне CPP, вот так:

int i;

void main()
{
	i=5;
}

void inf()
{
	i=7;
}

И тогда любые действия над ней в одной функции будут значимы для другой.


| |
Автор Каев Артем.
[AD]