Zmienne const
Utworzy Pan/Pani wartości tylko do odczytu.
Zmienne const to bezpłatna lekcja C Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 4 lekcji w sumie.
Znaczenie const
Słowo kluczowe const informuje kompilator, że wartość zmiennej nie może się zmienić po inicjalizacji.
Próba zmodyfikowania jej później zakończy się błędem kompilacji. Chroni to wartości, które powinny pozostać stałe.
const int MAX_USERS = 100;Deklarowanie const
Wartość zmiennej const trzeba podać podczas jej deklarowania, ponieważ później nie można jej przypisać.
W tym przykładzie PI jest inicjalizowane raz i używane do odczytu jak każda zwykła zmienna.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
printf("%f\n", PI);
return 0;
}Próba zmiany const
Przypisanie wartości do const po deklaracji jest błędem kompilacji.
Poniższy wiersz zostałby odrzucony przez kompilator — i właśnie takiej ochrony oczekujemy.
const int LIMIT = 50;
/* LIMIT = 60; <- compile error */const ma określony typ
W przeciwieństwie do zwykłego makra zmienna const ma rzeczywisty typ, który kompilator sprawdza.
Zapewnia to bezpieczeństwo typów: kompilator wie, że RATE jest typu double, i ostrzega przed nieprawidłowym użyciem.
#include <stdio.h>
int main(void) {
const double RATE = 0.05;
double total = 200.0 * RATE;
printf("%.2f\n", total);
return 0;
}const ze wskaźnikami: dane
Kwalifikator const wskaźnika występuje w dwóch wariantach. const int *p oznacza, że danych, na które wskazuje p, nie można zmienić za jego pośrednictwem.
Nadal można zmienić adres przechowywany w p, aby wskazywał inne miejsce, ale nie można zapisywać za jego pomocą.
int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */const ze wskaźnikami: wskaźnik
int *const p oznacza, że samego wskaźnika nie można przypisać ponownie, ale dane można zmieniać.
Deklaracje należy czytać od prawej do lewej: „p jest stałym wskaźnikiem do int”.
int x = 5, y = 8;
int *const p = &x;
*p = 9; /* allowed */
/* p = &y; <- error: pointer is const */Ochrona argumentów funkcji
Oznaczenie parametru wskaźnikowego jako const gwarantuje, że funkcja nie zmodyfikuje danych wywołującego.
Dokumentuje to zamiar programisty i pozwala kompilatorowi wykrywać przypadkowe zapisy.
#include <stdio.h>
void show(const char *msg) {
printf("%s\n", msg);
}
int main(void) {
show("hello");
return 0;
}const w obliczeniach
Częstym zastosowaniem są stałe wartości konfiguracyjne, takie jak stawka podatku lub współczynnik przeliczeniowy.
Odczytywanie stałej sprawia, że wzór pozostaje przejrzysty, a wartość jest przechowywana w jednym miejscu.
#include <stdio.h>
int main(void) {
const double KM_PER_MILE = 1.609;
double miles = 10.0;
printf("%.2f km\n", miles * KM_PER_MILE);
return 0;
}Const ma lokalizację w pamięci
Ponieważ const jest rzeczywistą zmienną, zajmuje miejsce w pamięci i można pobrać jej adres.
Różni się tym od makra #define, które jest wyłącznie podstawieniem tekstu i nie ma adresu.
#include <stdio.h>
int main(void) {
const int N = 42;
const int *p = &N;
printf("%d\n", *p);
return 0;
}Zakres i czas życia
const podlega tym samym regułom zakresu co zwykłe zmienne.
Zadeklarowana wewnątrz funkcji jest lokalna, a zadeklarowana poza nią — globalna. Taki zakres jest kolejną zaletą w porównaniu z makrami obejmującymi cały plik.
#include <stdio.h>
const int GLOBAL_MAX = 1000;
int main(void) {
const int local_min = 1;
printf("%d %d\n", local_min, GLOBAL_MAX);
return 0;
}const a magiczne liczby
Zastąpienie bezpośrednio wpisanych liczb nazwanymi wartościami const usuwa „magiczne liczby”.
Jeśli wartość kiedykolwiek się zmieni, wystarczy edytować jedną linię zamiast przeszukiwać cały program.
#include <stdio.h>
int main(void) {
const int SECONDS_PER_MIN = 60;
int minutes = 5;
printf("%d seconds\n", minutes * SECONDS_PER_MIN);
return 0;
}Szybki test
Sprawdź znajomość działania const.
Podsumowanie
Zmienna const ma określony typ i przechowuje wartość tylko do odczytu, którą kompilator chroni przed zmianą.
Ma typ, zakres i adres, w przeciwieństwie do makra. W przypadku wskaźników const może dotyczyć danych, wskaźnika albo obu tych elementów. Następnie porównamy to rozwiązanie z #define.
Często zadawane pytania
Czy lekcja „Zmienne const” jest bezpłatna?
Tak — pełny tekst „Zmienne const” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zmienne const”?
Utworzy Pan/Pani wartości tylko do odczytu. Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C Academy?
Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Zmienne const”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?
Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.