69692

Локальні і глобальні змінні

Доклад

Информатика, кибернетика и программирование

Локальні змінні доступні тільки у функції а глобальні доступні у всій програмі. Локальні і глобальні змінні Змінні i і g глобальні вони доступні у всій програмі. Для передачі глобальних змінних у функцію використовується інструкція...

Украинкский

2014-10-08

53.5 KB

2 чел.

Тема 20: Локальні і глобальні змінні

Ми неодноразово стикалися в цій книзі з локальними і глобальними змінними. Локальні змінні доступні тільки у функції, а глобальні — доступні у всій програмі. Вони доступні всім функціям. У лістингу 8.5 приведений невеликий приклад:

Лістинг 8.5.Использование глобальних і локальних змінних

$i   =   10;

$g   =   7;

function fl ()

{

$x = 5;

5i = 0; global $g;

echo "g = $g\n"; echo "i = $i\n";

fi();

echo "$x\n";

Мал. 8.3. Локальні і глобальні змінні

Змінні $i і $g — глобальні, вони доступні у всій програмі. Для передачі глобальних змінних у функцію використовується інструкція global:

global   список   змінних

Якщо ми не виконаємо цю інструкцію, наша функція не дістане доступ до змінній $g. Звернете увагу на дві змінні $i: одна з них глобальна, а інша — локальна (у тілі функції).

У функції використовуватиметься локальна змінна, проте, якщо ми оголосимо змінну глобальної:

global   $g,   $i;

то використовуватиметься значення глобальної змінної. Спробуйте змінити функцію  fl (див. перед. лістинг 8.5) так (див. лістинг 8.6):

Лістинг 8.6. Некоректне використання глобальних і локальних змінних

<?

$i   =   10; $g   =   7;

function   fl () {

$i = 5;

echo $i;   // виведе 5

global $i;

echo $i;   // виведе 10

} fl();

?>

Змінна $х є локальною і недоступна в основній програмі, тому ми отримаємо повідомлення про те, що дана змінна не визначена (див. мал. 8.3).

Якщо функція змінить значення глобальної змінної, то значення змінної буде змінено і в основній програмі.

Приклад:

<?

$g   =   5;

function   fl()     {    global    $g;    $g   »   10;    );

fl();

echo   $g;    //   виведе   10

?>

Ми вже говорили про масив SGLOBALS, тому я не стану повторюватися, а лише скажу, що локальні змінні функцій не є елементами даного масиву.

8.7. Статичні змінні

Окрім локальних і глобальних змінних, в PHP існує ще один тип змінних — статичні. Якщо в тілі функції оголошена статична змінна, то компілятор її не видалятиме після завершення роботи функції. Наступний приклад демонструє роботу із статичною змінною:

<?

function   fl()    (   static   $x;   $x++;   echo   "Sx   ";    }

for    ($i=0;    $i++<5;    )    fl();

?>

Наступний сценарій виведе рядок 1 2 3 4 5. Якщо видалити інструкцію static, буде виведений рядок 1 1 1 1 1, тому що змінна $х віддалятиметься при завершенні роботи функції і обнулятиметься при кожному її виклику. Чому 1 1 1 1 1, а не 0 0 0 0 0? Змінна $х инкре-ментируется відразу після обнулення, а тільки потім виводиться. Статичні змінні не є елементами SGLOBALS.


 

А также другие работы, которые могут Вас заинтересовать

23370. Исследование преобразователя давления Метран 100 444 KB
  Провести поверку преобразователя давления Метран100 с помощью грузопоршневого и образцового пружинного манометров. Построить градуировочную характеристику зависимости унифицированного токового сигнала Iвых от входного давления Рд. Описание лабораторной установки Лабораторная установка представляет собой поверочный грузопоршневой манометр МП60 пресс на котором установлены образцовый манометр с пределом измерения 25 МПа и преобразователь давления Метран 100 с цифровым индикатором жидкокристаллическим дисплеем для представления...
23371. Создание мультимедийных приложений 115 KB
  В настоящей лабораторной работе будет показано как создать простейшие приложения для прослушивания звуковых файлов и просмотра анимации с помощью компонента MediaPlayer. Компонент MediaPlayer Компонент MediaPlayer расположен на странице System Палитры Компонентов. Общий вид компонента MediaPlayer представлен на рис. Вид MediaPlayer на форме Ниже в таблице 16.
23372. Использование компонента Timer. Организация простейшей мультипликации 68.5 KB
  В данной работе приводятся примеры работы компонента Timer обеспечивающего доступ к системному таймеру компьютера и его использование совместно с компонентом Image для создания простейшей мультипликации. Компонент Timer. Прием сообщений от таймера компьютера в приложении Delphi обеспечивает специальный компонент Timer со страницы System Палитры Компонентов.
23373. Конструирование меню и работа со стандартными окнами диалога Windows 322.4 KB
  Контекстное меню Рабочая область редактора Панель инструментов Меню Рис. Создание главного меню приложения Для создания главного меню приложения необходимо: поместить на форму компонент MainMenu Главное меню со станицы Standard Палиры Компонентов. Двойным щелчком по данному невизуальному компоненту вызвать редактор меню: Перемещаясь по обозначенным пунктам меню задаем в свойстве Caption каждого пункта.
23374. Отображение графической информации в Delphi 112.5 KB
  Объект Canvas Delphi имеет в своём распоряжении специальный объект который оформлен в виде свойства Canvas. Слово Canvas можно перевести на русский язык как холст для рисования или канва. Если у объекта есть свойство Canvas на его поверхности можно рисовать. Кроме компонентов перечисленных выше свойством Canvas обладают также: Image SpLitter ControlBox а так же объект TPrinter который благодаря этому свойству позволяет распечатывать графические изображения на принтере.
23375. Определение момента инерции с помощью маятника Обербека 349 KB
  Китаева Определение момента инерции с помощью маятника Обербека Методические указания к выполнению лабораторной работы № 6 по курсу механики молекулярной физики и термодинамики. Маятник Обербека предназначен для изучения прямолинейного равнопеременного и вращательного движения в частности для определения ускорения момента инерции тел. Векторное уравнение 1 эквивалентно трём скалярным уравнения 2 каждое из которых из которых представляет собой основное уравнение динамики вращательного движения относительно неподвижной оси или :...
23376. Определение отношения молярных теплоёмкостей газа при постоянном давлении и объёме по методу Клемана и Дезорма 687.5 KB
  Целью настоящей работы является определение отношения молярных теплоёмкостей воздуха при постоянном давлении и объёме по методу Клемана и Дезорма. Тогда 5 Так для воздуха имеем: . Первая 1 широкая для лучшего адиабатического расширения воздуха находящегося в сосуде соединена с сосудом и запирается краном ; вторая 2 соединена с насосом и снабжена краном ; третья 3 соединена с Uобразным жидкостным водяным манометром 4....
23377. Определение момента инерции методом крутильных колебаний 633.5 KB
  Орлова Определение момента инерции методом крутильных колебаний Методические указания к выполнению лабораторной работы № 8 по курсу механики молекулярной физики и термодинамики. Это уравнение математически тождественно дифференциальному уравнению свободных незатухающих колебаний: 2 где смещение колеблющегося тела относительно положения равновесия; циклическая частота колебаний причём ...
23378. Определение скорости звука в воздухе 333 KB
  При распространении волны частицы среды колеблются около своих положений равновесия. Упругие волны бывают продольными и поперечными. В продольных волнах частицы среды колеблются в направлении распространения волны. В поперечных волнах частицы среды колеблются в направлениях перпендикулярных направлению распространения волны.