Программирование - это просто
Advertisement
Главная
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern. Печать E-mail
Автор megabax   
07.05.2011 г.
New Page 1

Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern.

 В языке C++ где переменная объявлена, там и действует ее область видимости. Если одна и та же переменная объявлена в нескольких местах, то действует наиболее локальная область видимости. Тоесть, вы например, можете объявить переменную внутри функции и вне ее, при чем одну и ту же. В этом случае внутри функции действует объявленная там переменная и ее изменение никак не влияет на изменение объявленной во вне функции переменной. Прежде чем проиллюстрировать все это на примере, я расскажу еще об одном типе переменных extern - внешние. Этот модификатор указывает, что переменная, объявленная внутри функции является не локальной, а внешней.

Теперь пример. И так, создадим новый проект, как вы это уже умеете, и добавим в него заголовочный файл les10.h. Для этого щелкаем на ветке "Заголовочные файлы" и в открывшемся меню выберем "Добавить" -> "Создать элемент".

Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern.

В открывшемся диалоге введем имя и выберем "Заголовочный файл (.h)":

Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern.

у нас откроется пустое пространство, куда мы введем всего лишь одну строку:

int a=10;

А в основной файл проекта введем вот такой текст:

// Les10_3.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <conio.h>

#include "les10.h";

 

int gl=11;

void test_local() {

int a=5;

int gl=7;

printf("Local variable a=%d\n",a);

printf("Local variable gl=%d\n",gl);

}

void test_extern() {

extern int a;

printf("Extern variable a=%d\n",a);

printf("Global variable gl=%d\n",gl);

}

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

{

test_local();

test_extern();

printf("Press any key to contimue");

_getch();

return 0;

}

Если мы запустим программу на исполнение, то вот что она выдаст:

Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern.

в чем же разница между extern и просто глобальной переменной?

Прежде чем приступить к рассмотрению спецификатора extern, коротко остановлюсь на компоновке программы. В языке С++ при редактировании связей к переменной может применяться одно из трех связываний: внутреннее, внешнее или же не относящееся ни к одному из этих типов. (В последнем случае редактирование связей к ней не применяется.) В общем случае к именам функций и глобальных переменных применяется внешнее связывание. Это означает, что после компоновки они будут доступны во всех файлах, составляющих программу. К объектам, объявленным со спецификатором static и видимым на уровне файла, применяется внутреннее связывание, после компоновки они будут доступны только внутри файла, в котором они объявлены. К локальным переменным связывание не применяется и поэтому они доступны только внутри своих блоков.

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

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

Еще существуют переменные с модификатором static. Это локальные переменные, которые не теряют свое значения после выхода из функции.

Последнее обновление ( 21.09.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги