Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Область видимости переменных

Читайте также:
  1. БЕЛГОРОДСКАЯ ОБЛАСТЬ
  2. Биосфера - область существования и функционирования организмов
  3. Взаимосвязь внутренних переменных организации.
  4. Воздействия переменных состояния.
  5. Выполняют согласование оптимизации положений ИСЗ и условий видимости с указанием минимальных высот ИСЗ над горизонтом.
  6. Глава 2. методы анализа двух переменных
  7. Горная область
  8. Горьковская область в годы Великой отечественной войны
  9. Горьковская область в период послевоенного восстановления.
  10. Дальность видимости ориентиров в море.

В предыдущих примерах часто объявлялись и использовались различные переменные. При этом важно знать, когда эти переменные доступны для использования или другими словами определить их область видимости. Рассмотрим такой пример.

Листинг 2.10. Пример использования локальных переменных.

#include
int main()
{
for(int i=0;i < 10;i++)
{
int k = i*i;
printf(“%d\n”,k);
}
return 0;
}

В этом примере объявляются две переменные i и k. Причем переменная k объявлена внутри цикла for. Спрашивается можно ли ее использовать и за пределами этого цикла? В данном случае ответ будет отрицательный, т.к. переменная k «пропадает» за пределами тела цикла и существует только внутри него. Условия данного примера можно обобщить и сказать, что обычная переменная объявленная внутри фигурных скобок {} видна только в них и не может быт использована за их пределами. По этой причине переменные объявленные, например, внутри функции main() недоступны в других функциях и наоборот. Однако если объявить переменную вначале программы, а не внутри функции, то они становятся доступными всем функциям и будут иметь глобальную область видимости. Такие переменные называются глобальными. Следующий пример показывает объявление и использование глобальных переменных.

Листинг 2.11. Определение глобальных переменных.

#include
int global_var = 0;
void my_func(void) {global_var = 10;}
int main()
{
printf(“%d\n”,global_var);
my_func();
printf(“%d\n”,global_var);
return 0;
}

Результатом выполнения программы будет следующий текст:

0
10

В этом примере объявлена глобальная переменная global_var, которая может использоваться и в функции main() и в функции my_func() и соответственно менять свое значение.

В языке С можно задавать переменные с одинаковыми именами и типами если они принадлежат разной области видимости. Например, можно задать глобальную переменную var типа int и такую же переменную внутри функции main(). В этом случае простое обращение к переменной по ее имени будет означать работу с локальной переменной, а если необходимо работать с глобальной, то перед ее именем необходимо поставить два двоеточия ‘::’. Следующий пример показывает такой способ работы с переменными.

Листинг 2.12. Работа с глобальными и локальными переменными.

#include
int var = 5;
int main()
{
int var = 10;
printf(“var = %d, ::var = %d”,var,::var);
return 0;
}

В результате получим

var = 10, ::var = 5

В языке С можно задавать класс переменных, которые будучи объявленными внутри фигурных скобок {} не исчезают и за их пределами, но в то же время имеют область видимости только внутри них. Класс таких переменных называется статическим и задается с помощью ключевого слова static. Поясним сказанное на следующем примере.

Листинг 2.13. Использование статических переменных.

#include
void iter(void);
int main()
{
for(int i=0;i < 4;i++)
iter();
return 0;
}
void iter(void)
{
int var = 1;
static int var_st = 1;
printf(“var = %d, var_st = %d\n”,var++,var_st++);
}

В результате на экране появятся следующие строчки:

var = 1, var_st = 1
var = 1, var_st = 2
var = 1, var_st = 3
var = 1, var_st = 4

Анализ полученных результатов показывает, что статическая переменная var_st объявленная внутри функции iter() не исчезает после ее завершения и при повторном вызове функции не инициализируется заново, т.к. она уже существует.

В языке С переменную можно задать как константу, т.е. ее значение нельзя изменять в процессе выполнения программы. Это бывает полезно, когда программист хочет обеспечить «защиту» переменной от изменения. Это достигается путем использования ключевого слова const, которое ставится перед типом переменной:

const int var_const = 10; //правильная инициализация
const int array[] = {10,20,30}; // правильная инициализация
var_const = 5; //ошибка

Например, ранее рассмотренная функция strcpy() копирования одной строки в другую принимает следующие параметры:

char* strcpy(char* dest, const char* src);

Здесь идентификатор const гарантирует, что строка src не будет изменена внутри функции strcpy().


 

Контрольные вопросы и задания 1.

  1. Каким образом можно задавать комментарии в программе написанной на языке С?
  2. Запишите объявление целочисленной переменной с именем var_i.
  3. С каких символов должны начинаться имена переменных?
  4. Как изменится значение переменной i после выполнения операции i=i+1;?
  5. Какой результат получится после выполнения операции var=7/2;?
  6. Запишите вещественные типы переменных.
  7. Может ли переменная символьного типа char принимать целые числовые значения?
  8. Приведите пример использования функции printf() для вывода значений двух целочисленных переменных на экран.
  9. Запишите функцию scanf() для ввода символа с клавиатуры.
  10. Как в языке С записывается операция умножения?
  11. Какой результат получится после операции деления двух целочисленных переменных var1=7 и var2 = 2?
  12. Запишите директиву #define для задания константы с именем LENGTH равной 10.
  13. Приведите пример макроса, позволяющий возводить число в квадрат.
  14. С помощью каких директив можно выполнять условную компиляцию программы?
  15. Каким символом обозначается операция логическое И и что она делает?
  16. Как записывается операция логическое ИЛИ и для чего она предназначена?
  17. Запишите операцию логическое НЕ применительно к переменной var_i.
  18. Приведите пример использования операции исключающего ИЛИ и объясните полученный результат.
  19. С помощью какой поразрядной операции можно выполнять деление числа на 2?
  20. Запишите операцию умножения числа на 4 с помощью поразрядной операции.

Контрольные вопросы и задания 2.

  1. Запишите условный оператор if для определения знака переменной var.
  2. В каких случаях следует использовать оператор switch?
  3. Используя условный оператор, выполните проверку на принадлежность значения переменной диапазону [10; 20).
  4. Приведите программу замены малых латинских букв большими с использованием оператора switch.
  5. Как записывается логическое равенство в операторе if?
  6. Приведите обозначение логического знака «не равно».
  7. Какими символами обозначаются логические операции И и ИЛИ в условном операторе if?
  8. В чем отличия между операторами while и do while?
  9. Дайте понятие вложенного цикла.
  10. Запишите прототип функции, которая принимает два целочисленных аргумента и возвращает вещественное число.
  11. Запишите функцию возведения числа в квадрат.
  12. Дайте понятие рекурсии.
  13. В каких задачах целесообразно использовать рекурсивные функции?
  14. Приведите функцию с тремя аргументами, один из которых задан со значением по умолчанию.
  15. Для чего используется ключевое слово const в языке С?
  16. Дайте понятие статических переменных и какие особенности их использования существуют?

<== предыдущая страница | следующая страница ==>
Функции | Поле внутри и снаружи проводника

Дата добавления: 2014-02-28; просмотров: 490; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.