Учебники

C — Правила области

Область действия в любом программировании — это область программы, в которой может существовать определенная переменная, и за пределами этой переменной к ней нельзя получить доступ. Есть три места, где переменные могут быть объявлены на языке программирования C —

  • Внутри функции или блока, который называется локальными переменными.

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

  • В определении параметров функции, которые называются формальными параметрами.

Внутри функции или блока, который называется локальными переменными.

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

В определении параметров функции, которые называются формальными параметрами.

Давайте разберемся, что такое локальные и глобальные переменные, а также формальные параметры.

Локальные переменные

Переменные, которые объявлены внутри функции или блока, называются локальными переменными. Они могут использоваться только операторами, которые находятся внутри этой функции или блока кода. Локальные переменные не известны функциям вне их собственных. В следующем примере показано, как используются локальные переменные. Здесь все переменные a, b и c являются локальными для функции main ().

Live Demo

 #include <stdio.h>
 
 int main () {

   / * объявление локальной переменной * /
   int a, b;
   int c;
 
   / * фактическая инициализация * /
   а = 10;
   б = 20;
   с = а + б;
 
   printf («значение a =% d, b =% d и c =% d \ n», a, b, c);
 
   вернуть 0;
 }

Глобальные переменные

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

Глобальная переменная может быть доступна любой функции. То есть глобальная переменная доступна для использования во всей вашей программе после ее объявления. Следующая программа показывает, как глобальные переменные используются в программе.

Live Demo

#include <stdio.h>
 
/* global variable declaration */
int g;
 
int main () {

  /* local variable declaration */
  int a, b;
 
  /* actual initialization */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}

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

Live Demo

#include <stdio.h>
 
/* global variable declaration */
int g = 20;
 
int main () {

  /* local variable declaration */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

value of g = 10

Формальные параметры

Формальные параметры обрабатываются как локальные переменные внутри функции и имеют приоритет над глобальными переменными. Ниже приведен пример —

Live Demo

#include <stdio.h>
 
/* global variable declaration */
int a = 20;
 
int main () {

  /* local variable declaration in main function */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);

  return 0;
}

/* function to add two integers */
int sum(int a, int b) {

   printf ("value of a in sum() = %d\n",  a);
   printf ("value of b in sum() = %d\n",  b);

   return a + b;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

Инициализация локальных и глобальных переменных

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

Тип данных Начальное значение по умолчанию
ИНТ 0
голец ‘\ 0’
поплавок 0
двойной 0
указатель НОЛЬ

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