Шаг 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;
}

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.