АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. I. ПРОБЛЕМЫ ВЗАИМОДЕЙСТВИЯ ПРИРОДЫ И ОБЩЕСТВА
  2. II. Пути противодействия психологическому воздействию противника.
  3. IV. Определите, какую задачу взаимодействия с практическим психологом поставил перед собой клиент.
  4. VI Обжалование решений, действий (бездействия) таможенных органов и их должностных лиц
  5. VI. Срок действия служебного контракта
  6. VII. По степени завершенности процесса воздействия на объекты защиты
  7. АВТОМАТИЧЕСКИЕ ВЕСОВЫЕ ДОЗАТОРЫ НЕПРЕРЫВНОГО ДЕЙСТВИЯ
  8. АВТОМАТИЧЕСКИЕ ВЕСОВЫЕ ДОЗАТОРЫ ПОРЦИОННОГО ДИСКРЕТНОГО ДЕЙСТВИЯ
  9. Аккультурация в межкультурных взаимодействиях
  10. Активность и степень воздействия на другие государственные орга-
  11. Активные действия
  12. Алгоритм наложения согревающего компресса на околоушную область

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

Напомним общую структуру исходного текста программы:

<директивы препроцессора>

<описание глобальных объектов>

<заголовок функции>

{

<описание локальных объектов>

<список инструкций>

}

Файл исходного текста может включать любое количество определений функций и/или глобальных данных.

Параметры функции являются локальными объектами и должны отличаться по идентификаторам от используемых в коде функции глобальных объектов. Локальные объекты, описанные в коде функции, имеют приоритет перед объектами, описанными вне функции, например:

#include<stdio.h>

int f1(int);

int f2(int);

int f3(int);

int n; // Глобальная n

void main (void)

{

int i=2; // Локальная i =2

n=3; // Глобальная n =3

i = f1(i); // Обе переменные i – локальные

printf(" 1: i=%d, n=%d\n",i,n); // i =7, n =3

n = f1(i); // n – глобальная, i – локальная

printf(" 2: i=%d, n=%d\n",i,n); // i =7, n =12

i = f2(n); // i и n – локальные

printf(" 3: i=%d, n=%d\n",i,n); // i =15, n =12

i = f3(i); // Обе переменные i – локальные

printf(" 4: i=%d, n=%d\n",i,n); // i =29, n =14

}

//–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

int f1(int i) { // Параметр функции i – локальная

int n = 5; // n – локальная

n+=i;

return n;

}

//–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

int f2(int n) { // Параметр функции n – локальная

n+=3;

return n;

}

//–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

int f3(int i) {

n+=2; // n – глобальная

return i+n;

}

 

Существуют следующие области действия: блок, файл, функция, прототип функции, область структурированных типов данных.

Блок. Идентификаторы, описанные внутри блока, являются локальными. Область действия идентификатора начинается в точке определения и заканчивается в конце блока, видимость – в пределах блока и внутренних блоков, время жизни – до выхода из блока. После выхода из блока память освобождается.

Файл. Идентификаторы, описанные вне любого блока, функции, класса или пространства имен, имеют глобальную видимость и постоянное время жизни и могут использоваться с момента их определения.

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

Прототип функции. Идентификаторы, указанные в списке параметров прототипа (декларации) функции, имеют областью действия только прототип функции.

Структурированный тип данных. Элементы структур и объединений являются видимыми лишь в их пределах. Они образуются при создании переменной указанного типа и разрушаются при ее уничтожении.

В языке С++ допускается в разных блоках программы использовать один и тот же идентификатор для разных объектов. Декларация такого идентификатора внутри блока скрывает доступ к ранее объявленному, например:

void main(void)

{

int a = 3;

printf(“\n Block 1: %d “, a); {

double a = 2.5;

printf(“\n Block 2: %lf “, a); {

char a = ‘A’;

printf(“\n Block 3: %c “, a);

}

printf(“\n New Block 2: %lf“, a+1.25);

}

printf(“\n New Block 1: %d“, ++a);

}

Результат программы:

Block 1: 3

Block 2: 2.5

Block 3: A

New Block 2: 3.75

New Block 1: 4

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)