Słowo kluczowe const (C) – Szybszy program

Powinniśmy pamiętać że w języku C funkcje zawsze korzystają z kopii oryginałów. Oczywiście sposobem na ominięcie konieczności kopiowania całej zmiennej do innego miejsca w pamięci jest przekazanie tylko wskaźnika. W taki sposób do funkcji są przekazywane tablice – przez wskaźnik.

Ale ’with great power comes great responsibility’, ponieważ pozwalamy sobie na pracę na oryginale. A przypadkowe zmiany stałych mogą spowodować zwiększoną ilość godzin spędzonych na szukaniu błędów.

Kiedy używamy w swoim programie struktur, rzeczywistość może być inna niż zakładamy. Załóżmy że mamy taką strukturę.

struct dane
{
int tab[50];
};

Rozmiar takiej struktury wynosi 200 bajtów (taki wynik został zwrócony przez sizeof(); używam kompilatora Visual C++).

I ta tablica wewnątrz struktury nie jest już 'przenoszona’ do funkcji przez wskaźnik; jest tworzona kopia obiektu.

Dlatego zamiast pisać:

void fun(struct dane d){...}

Powinno się zapisać to tak:

void fun(const struct dane* d){...}

Dzięki takiemu zabiegowi program nie kopiuje dużego obszaru danych, oraz mamy pewność, że nic nie zmienimy w strukturze przez przypadek