Czym jest w C++ zmienna zadeklarowana jako int zm1[10];?
A. tablicą łańcuchów
B. liczbą
C. tablicą liczb całkowitych
D. znakiem
Deklaracja int zm1[10]; oznacza tablicę liczb całkowitych, czyli zestaw 10 elementów typu int zapisanych pod jedną nazwą zm1. W C++ nawiasy kwadratowe po nazwie zmiennej mówią, że nie tworzysz pojedynczej zmiennej, tylko tablicę o określonym rozmiarze. Elementy takiej tablicy indeksuje się od zera, więc dostępne pozycje to zm1[0], zm1[1], aż do zm1[9]. To jest ważne praktycznie, bo próba użycia zm1[10] wychodzi już poza zakres tablicy i może dać trudne do wykrycia błędy. Zgodnie z zasadami języka C++ elementy klasycznej tablicy są ułożone w pamięci ciągle, jeden za drugim, co bywa użyteczne przy algorytmach, sortowaniu albo pracy z danymi liczbowymi. Moim zdaniem dobrze od razu kojarzyć taki zapis z listą wartości, np. ocen, wyników pomiarów albo liczników. W nowoczesnym C++ często zaleca się też używanie std::array<int, 10> dla stałego rozmiaru albo std::vector<int> dla rozmiaru zmiennego, bo są bezpieczniejsze i wygodniejsze, ale sama deklaracja int zm1[10]; nadal oznacza dokładnie tablicę 10 liczb całkowitych.
W tej deklaracji łatwo pomylić kilka pojęć, zwłaszcza jeśli patrzy się tylko na słowo int albo tylko na nawiasy kwadratowe. Sam typ int rzeczywiście oznacza liczbę całkowitą, ale zapis int zm1[10]; nie tworzy jednej liczby. Gdyby chodziło o pojedynczą zmienną liczbową, wystarczyłoby int zm1;. Dopiero fragment [10] zmienia znaczenie deklaracji i mówi kompilatorowi, że ma zarezerwować miejsce na dziesięć elementów tego samego typu. To taki typowy haczyk składniowy w C i C++, trochę nieintuicyjny na początku nauki. Nie jest to też znak, ponieważ znak w C++ zwykle deklaruje się typem char, na przykład char litera;. Typ int przechowuje wartości całkowite, a nie pojedyncze symbole tekstowe, choć technicznie znaki też mają kody liczbowe, co czasem miesza w głowie. Deklaracja nie oznacza również tablicy łańcuchów. Łańcuch tekstowy w stylu C to najczęściej tablica znaków char, a w nowoczesnym C++ wygodniej używa się typu std::string. Żeby mieć tablicę napisów, należałoby użyć na przykład std::string napisy[10];, a nie int. Dobra praktyka jest taka, żeby czytać deklarację całościowo: typ elementu stoi przed nazwą, a nawiasy kwadratowe określają liczbę elementów tablicy. Wtedy od razu widać, że zm1 to zbiór dziesięciu wartości typu int, a nie pojedyncza wartość ani tekst.