А. Согомонян
В функциях можно объявлять свои переменные, эти переменные называются локальными, то есть могут использоваться только в функции в которой объявлены. При выходе из функции они уничтожаются.Вот пример: 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 <iostream.h > 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 <iostream.h> 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 <iostream.h> 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 Чтоб функция имела возможность изменить переданную ей в качестве аргумента переменную надо передать переменную с помощью указателя или ссылки, но об этом потом :].
Литература по Microsoft Visual Basic
|