Топ питань
Часова шкала
Чат
Перспективи

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

змінна, оголошена всередині блоку коду З Вікіпедії, вільної енциклопедії

Remove ads

У програмуванні лока́льною змі́нною називають змінну, оголошену всередині блоку коду. Область видимості локальної змінної починається в точці її оголошення і закінчується в кінці цього блоку[1][2]. Наприклад, у мові С локальними є змінні оголошені всередині функції або блоку (в С блоки обмежуються фігурними дужками { ... })[3].

Thumb
Приклад локальної змінної в середовищі Microsoft Visual Studio 2012

Існують мови програмування, в яких локальну змінну можна оголосити тільки у функції, оскільки в цих мовах локальна змінна, оголошена в блоці, оголошується у функції безпосереднього розташування цього блоку.

Remove ads

Організація в пам'яті

Локальні змінні в більшості мов зберігаються в стеку викликів[4]. Це означає, що якщо функція рекурсивно викликає сама себе, то змінні кожен раз створюються заново і їм виділяється персональна пам'ять, а не записуються в одне і те ж місце.

Обмеження

Локальна змінна обмежується тільки розміром пам'яті виділеної операційною системою або комп'ютером під стек.

Алголоподібні мови дозволяють необмежену вкладеність блоків і в кожному можуть бути свої локальні змінні.

Remove ads

Галузь застосування

Локальні змінні уможливлюють рекурсію[5].

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

Мови програмування, які використовують виклик за значенням, виділяють кожній підпрограмі локальну область видимості з локальних змінними і локальною копією аргументів, переданих їй.

Локальною змінною є будь-який параметр функції (наприклад, у мові Сі), що не використовує посилань або покажчиків.

Remove ads

Статичні локальні змінні

Статичні змінні — це особливий тип локальних змінних, доступний у багатьох популярних мовах (зокрема в C/C++, Visual Basic, VB.NET). Суть його в тому, що така змінна зберігає своє значення для наступних викликів функції. І в кожному виклику воно буде саме таким, яким було при виході з функції до цього[6].

local у Perl

Perl має ключове слово, local, для «локалізації» змінних, але в цьому випадку, local означає не те, що більшість людей очікує від нього[7]. Воно створює тимчасову змінну з обмеженим часом життя, але розміщену в глобальному просторі назв. Це дозволяє бачити цю змінну в будь-якій функції, викликаній із цього блоку. Для створення локальних змінних використовуйте оператор my. Щоб зрозуміти, як це працює розглянемо такий код:

$a = 1;

sub f()
{
  local $a;
  $a = 2;
  g();
}
sub g()
{
  print "$a\n";
}

g();
f();
g();

Результат:

1
2
1

Як бачимо, назва глобальної змінної $a, пр вході у функцію f() починає вказувати на нову тимчасову змінну, створену у функції, але при виході з f() глобальне значення відновлюється. Якщо в цьому випадку замість local використоати my, було б тричі виведено 1, оскільки в цьому випадку змінна $a дійсно була б локальною для функції f() і не видимою з g().

З цієї причини багато хто вважає, що оператор local повинен мати іншу назву, наприклад save[8].

Remove ads

Локальні змінні в Ruby

Мова програмування Ruby також натхненна Perl, але в ній позначення простіші: назві глобальної змінної має передувати знак $, наприклад, $variable_name, тоді як локальна змінна просто не має знака $ перед назвою, наприклад, variable_name (у Perl усі скалярні значення мають спереду $).

Приклад використання локальних змінних мовою С

#include <stdio.h>
int a = 0; // глобальна змінна

int main()
{
  printf("%d", a); // буде виведено число 0
  {
    int a = 1; // оголошено локальну змінну а, глобальна змінна a не видима
    printf("%d", a); // буде виведено число 1
    {
     int a = 2; // ще локальна змінна в блоці, глобальна змінна a не видима, не видима й попередня локальна змінна
     printf("%d", a); // буде виведено число 2
    }
  }
}

Видасть:

012
Remove ads

Примітки

Див. також

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads