Опції. Частина 2, C / C + +, Програмування, статті

А. Согомонян, Азбука Visual Basic

У функціях можна оголошувати свої змінні, ці змінні називаються локальними, тобто можуть використовуватися тільки у функції в якій оголошені. При виході з функції вони унічтожаются.Вот приклад:
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

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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*