Słowo kluczowe const (C/C++) – Ochrona przed błędami programisty

Kompilatora C nie nazwę kompilatorem wymagającym. Często gdy kompiluję kod pod GCC pojawia się ostrzeżenie z dopiskiem enabled by default. Dzięki pobłażliwemu podchodzeniu do kompilowanego kodu, pozwala to uzyskać pewną elastyczność w tworzeniu programów. Także kompilatory języka C mogą być małych rozmiarów jak Tiny C Compiler.

Czasem z tej pobłażliwości warto zrezygnować, aby pisać kod bardziej odporny na błędy, od strony programisty.
Słowo kluczowe const służy do ustalenia czy coś ma być niezmienne przez okres działania programu. Tylko tyle i aż tyle. „Siłę” słowa można zaobserwować w pierwszym przykładzie:
Program bez const:
#include <stdio.h>
int main()
{
char* text = "hello World";
text[0] = 'H';
printf("%s", text);
return 0;
}

Na pierwszy rzut oka wszystko wygląda poprawnie, program się skompiluje oraz nie „wyrzuci” żadnych ostrzeżeń, a jednak program po uruchomieniu „wywali się” informując o naruszeniu ochrony pamięci.

Wynika z tego że ciąg „hello World” jest ciągiem stałym, zapisanym wewnątrz skompilowanego obiektu, który jest później łączony w postać wykonywalnej aplikacji.

Dlatego dodanie słowa kluczowego const po lewej stronie typu, da odpowiednią informację kompilatorowi. Który będzie pilnował, aby tego ciągu nie można było zmieniać.

Następnym razem o użyciu słowa kluczowego const, aby poprawić wydajność programów.