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

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

Пример 4: Использование глобальных переменных.

Переменная g доступна как в функции main(), так и во всех других функциях программы.

#include "stdafx.h"

#include <windows.h>

#include <clocale>

int g=10; // глобальная переменная

void plus1() // определение функции plus1()

{ int p=10; // локальная переменная

g=g+1;

p=p+1;

printf("Плюс 1: g=%d\tp=%d\n",g,p);

}

void minus1() // определение функции minus1()

{ int m=10; // локальная переменная

g=g-1;

m=m-1;

printf("Минус 1: g=%d\tm=%d\n",g,m);

}

// вызывающая программа

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

{ setlocale(0,"Russian");

printf("начало: g=%d\n",g);

plus1();

plus1();

g++; // обращение к глобальной переменной g

printf("Середина: g=%d \n",g);

minus1();

minus1();

// локальные переменные здесь недоступны :

p++; // ошибка доступа!

m++; // ошибка доступа!

printf("Конец g=%d \n",g);

system ("pause");

return 0;

}

В результате работы программы, на экране будет напечатано :

Начало : g=10

Плюс 1: g=11 p=11

Плюс 1: g=12 p=11

Середина : g=13

Минус 1: g=12 m=9

Минус 1: g=11 m=8

Конец : g=11

Глобальная переменная g доступна из любой функции программы, включая функцию main(). К переменным p и m доступа из функции main()нет, этих переменных просто не существует в момент выполнения функции main().

Глобальные переменные по-умолчанию инициализируются нулем.

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

Статические переменные.

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

 

. . .

int g=10; // глобальная переменная

void plus1() // определение функции plus1()

{ static int k=0; // статическая переменная (сохраняется)

int p=10; // локальная переменная (уничтожается)

g=g+1;

p=p+1;

printf("Плюс %d: g=%d\tp=%d\n",k,g,p);

}

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

{ setlocale(0,"Russian");

printf("начало: g=%d\n",g);

plus1();

plus1();

plus1();

. . .

}

В результате работы программы, на экране будет напечатано :

Начало : g=10

Плюс 1: g=11 p=11

Плюс 2: g=12 p=11

Плюс 3: g=13 p=11

. . .



in/footer.php"; ?>