На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Программирование » C, C++

Функции, часть 2 - локальные и глобальные переменные

Функции, часть 2 - локальные и глобальные переменные А. Согомонян Азбука Технологий Программирования Функции в Си. Часть 2 В функциях можно объявлять свои переменные, эти переменные называются локальными, то есть могут использоваться только в функции в которой объявлены...

В функциях можно объявлять свои переменные, эти переменные называются локальными, то есть могут использоваться только в функции в которой объявлены. При выходе из функции они уничтожаются. Вот пример:
int main() {
int i=1;
return 0;
}
void afunc()
{
int i=2;
}

Компилятор при этом ничего типа [Error: redeclaration of `int i'] не скажет. В main() у нас своя перемення i, а в afunc() своя, никакого отношения друг к другу они не имеют. Если же объявить переменную вне всяких функций (такие переменные называются глобальными), то её можно использовать во всех функциях без объявления, т.е. вот так:
int i=0;
int main()
{
i=3;
return 0;
}
void afunc()
{
i=5;
}


Тут уже любые действия над переменной в одной функции значимы для другой, то есть в данном случае в функции afunc() до присвоения i 5 значение i будет 3, а не 0. Глобальную переменную можно использовать в функции, только если в функции не объявлена та же преременная. Если же она объявлена, то она локальна, то есть глобальную функция "не видит".
#include
int i=1;
int main()
{
int i;
i=2;
cout<<""i in main(): "<<"i<<"endl;
return 0;
}
void afunc()
{
cout<<""i in afunc(): "<<"i;
}


результат:
i in main(): 2
i in afunc(): 1


Это значит, что в main() у нас своя локальная переменная i, а afunc() использует глобальную, так как в ней i не объявлена.

А вот ещё один случай, когда в одной функции можно использовать и локальную, и глобальную переменные:
#include
int i=1;
int main()
{
int i;
i=2;
cout<<""i local: "<<"i<<"" i global: "<<"::i;
return 0;
}

получим:
i local: 2 i global: 1
:: перед переменной значит что нам нужна глобальная переменная.

Аргументы функции передаются в функцию как значения, то есть они являются локальными переменными. Это значит, что при передаче аргументов в функцию создаются их локальные копии, с которыми работает функция. То есть если в функции вы изменяете значение аргумента, то изменяется не переменная, которую передали функции в качестве аргумента, а её локальная копия. Вот пример:
#include
void func(int x,int y);
int main()
{
int x=1,y=2;
cout<<""main(): x="<<"x<<"" y=" <<"y<<"endl;
func(x,y);
cout<<""main(): x="<<"x<<"" y=" <<"y<<"endl;
return 0;
}

void func(int x,int y)
{
cout<<""func(): x="<<"x<<"" y=" <<"y<<"endl;
x=3;
y=4;
cout<<""func(): x="<<"x<<"" y=" <<"y<<"endl;
}


результат выполнения:
main(): x=1 y=2
func(): x=1 y=2
func(): x=3 y=4
main(): x=1 y=2


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

А. Согомонян
Азбука Технологий Программирования

Другие разделы
C, C++
Java
PHP
VBasic, VBS
Delphi и Pascal
Новое в разделе
Базы данных
Общие вопросы
Теория программирования и алгоритмы
JavaScript и DHTML
Perl
Python
Active Server Pages
Программирование под Windows
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100