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.
Wyzwanie
ŁatwySpró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