Menu
Coddy logo textTech

Zakres zmiennych

Lekcja 5 z 17 w kursie Funkcje w C w Coddy.

Każda zmienna ma zasięg, czyli część programu, w której możesz jej używać. Zmienne mogą być globalne lub lokalne.

Zmienne lokalne

Zmienne lokalne są tworzone wewnątrz bloku kodu, na przykład w funkcji, i istnieją tylko w jego obrębie. Pamięć dla tych zmiennych jest przydzielana po rozpoczęciu bloku i zwalniana po jego zakończeniu, co usuwa zmienne.

#include <stdio.h>
void message() {
   char *msg = "Coddy";
   printf("%s \n", msg);
}
int main(void) {
   char *title = "tech";
   message();
   printf("%s \n", title);
   return 0;
}

W funkcji message zdefiniowano zmienną msg. Podobnie funkcja main definiuje zmienną title. Te zmienne nie są dostępne poza odpowiednimi funkcjami. Na przykład nie możemy użyć zmiennej msg w funkcji main, ponieważ jej zasięg jest ograniczony do funkcji message.

Ta sama zasada dotyczy zmiennych zdefiniowanych wewnątrz zagnieżdżonych bloków kodu, takich jak pętle if, else, switch, case, for, while i do..while.

Zmienne globalne

Zmienne globalne są definiowane w pliku programu poza wszystkimi funkcjami. Z tych zmiennych może korzystać każda funkcja w tym pliku.

#include <stdio.h>
int a = 12;
void increment()
{
   a++;
   printf("a=%d \n", a);
}
int main(void)
{
   increment();          
   a++;
   printf("a=%d \n", a);    
    
   return 0;
}

Wynik:

a=13 
a=14 

Tutaj zmienna a jest widoczna dla wszystkich funkcji, ponieważ została zadeklarowana globalnie.

 

challenge icon

Wyzwanie

Łatwy

Spróbuj użyć zmiennej globalnej:

  • Zdefiniuj zmienną globalną o nazwie <strong>gv</strong> poza dowolną funkcją i przypisz jej wartość 20. 
  • Zmodyfikuj funkcję increment, aby używała tej zmiennej globalnej. 
  • Napisz nową funkcję decrement, która zmniejsza wartość zmiennej globalnej i ją wypisuje. 
  • Wypisz wartość zmiennej w funkcji main.

Wynik powinien wyglądać tak:

Global variable after increment: 21 
Global variable after decrement: 20 
Global variable in main: 20 

Spróbuj swoich sił

#include <stdio.h>

// Zdefiniuj zmienną globalną o nazwie gv i przypisz jej wartość 20


// Zmodyfikuj funkcję increment
void increment() {
   
    printf("Global variable after increment: %d \n", gv);
}

// Zdefiniuj funkcję decrement


int main(void) {
    
    increment();
    decrement();
    // Wypisz zmienną 
    
    return 0;
}

Wszystkie lekcje w sekcji Funkcje w C

Poćwicz samodzielnie: Kompilator C online