W tym samouczku nauczymy się pracować z tablicami. Nauczymy się deklarować, inicjalizować i uzyskiwać dostęp do elementów tablic w programowaniu w C ++ za pomocą przykładów.
W języku C ++ tablica to zmienna, która może przechowywać wiele wartości tego samego typu. Na przykład,
Załóżmy, że w klasie jest 27 uczniów i musimy przechowywać oceny wszystkich z nich. Zamiast tworzyć 27 osobnych zmiennych, możemy po prostu stworzyć tablicę:
double grade(27);
Tutaj grade jest tablicą, która może pomieścić maksymalnie 27 elementów double
typu.
W C ++ nie można zmienić rozmiaru i typu tablic po ich deklaracji.
Deklaracja tablicy w języku C ++
dataType arrayName(arraySize);
Na przykład,
int x(6);
Tutaj,
int
- rodzaj przechowywanego elementu- x - nazwa tablicy
6
- rozmiar tablicy
Dostęp do elementów w tablicy C ++
W C ++ każdy element tablicy jest powiązany z liczbą. Liczba jest nazywana indeksem tablicy. Możemy uzyskać dostęp do elementów tablicy za pomocą tych indeksów.
// syntax to access array elements array(index);
Rozważ tablicę x, którą widzieliśmy powyżej.

Kilka rzeczy do zapamiętania:
- Indeksy tablicy zaczynają się od
0
. Znaczenie x (0) to pierwszy element przechowywany pod indeksem0
. - Jeśli rozmiar tablicy to
n
, ostatni element jest przechowywany pod indeksem(n-1)
. W tym przykładzie x (5) jest ostatnim elementem. - Elementy tablicy mają kolejne adresy. Na przykład załóżmy, że adres początkowy
x(0)
to 2120d. Następnie adres następnego elementux(1)
będzie miał wartość 2124d, adresx(2)
to 2128d i tak dalej.
Tutaj rozmiar każdego elementu jest zwiększany o 4. Dzieje się tak, ponieważ rozmiarint
wynosi 4 bajty.
Inicjalizacja tablicy w C ++
W C ++ możliwe jest zainicjowanie tablicy podczas deklaracji. Na przykład,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);

Inna metoda inicjalizacji tablicy podczas deklaracji:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Tutaj nie wspomnieliśmy o rozmiarze tablicy. W takich przypadkach kompilator automatycznie oblicza rozmiar.
Tablica C ++ z pustymi członkami
W C ++, jeśli tablica ma rozmiar n
, możemy przechowywać do n liczby elementów w tablicy. Co się jednak stanie, jeśli będziemy przechowywać mniej niż n liczby elementów.
Na przykład,
// store only 3 elements in the array int x(6) = (19, 10, 8);
W tym przypadku tablica x ma rozmiar 6
. Jednak zainicjowaliśmy go tylko z 3 elementami.
W takich przypadkach kompilator przypisuje do pozostałych miejsc losowe wartości. Często ta losowa wartość jest po prostu 0
.

Jak wstawiać i drukować elementy tablicy?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Przykład 1: Wyświetlanie elementów tablicy
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Wynik
Liczby to: 7 5 6 12 35 Liczby to: 7 5 6 12 35
Tutaj użyliśmy for
pętli do iteracji od i = 0
do i = 4
. W każdej iteracji wydrukowaliśmy numbers(i)
.
Ponownie użyliśmy zakresu opartego na pętli for, aby wydrukować elementy tablicy. Aby dowiedzieć się więcej o tej pętli, sprawdź C ++ Ranged for Loop.
Uwaga: w naszej pętli opartej na zakresie użyliśmy kodu const int &n
zamiast int n
deklaracji zakresu. Jednak const int &n
jest bardziej preferowany, ponieważ:
- Użycie
int n
po prostu kopiuje elementy tablicy do zmiennej n podczas każdej iteracji. To nie jest wydajne pod względem pamięci.
& n używa jednak adresów pamięci elementów tablicy, aby uzyskać dostęp do ich danych bez kopiowania ich do nowej zmiennej. To oszczędza pamięć. - Po prostu drukujemy elementy tablicy, a nie modyfikujemy ich. Dlatego używamy,
const
aby nie przypadkowo zmienić wartości tablicy.
Przykład 2: pobieranie danych wejściowych od użytkownika i przechowywanie ich w tablicy
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Wynik
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Zwiększamy również wartość count o
1
w każdej iteracji, dzięki czemu możemy uzyskać rozmiar tablicy do końca pętli for. - Po wydrukowaniu wszystkich elementów wypisujemy sumę i średnią wszystkich liczb. Średnia z liczb jest podana przez
average = sum / count;
Uwaga:for
zamiast zwykłej for
pętli użyliśmy pętli dystansowej .
Normalna for
pętla wymaga od nas określenia liczby iteracji, którą określa rozmiar tablicy.
Ale for
pętla dystansowa nie wymaga takich specyfikacji.
C ++ Array poza granicami
Jeśli zadeklarujemy tablicę o rozmiarze 10, to tablica będzie zawierała elementy o indeksach od 0 do 9.
Jeśli jednak spróbujemy uzyskać dostęp do elementu o indeksie 10 lub większym niż 10, spowoduje to niezdefiniowane zachowanie.