C ++ масиви (с примери)

В този урок ще се научим да работим с масиви. Ще се научим да декларираме, инициализираме и достъпваме елементи от масив в програмирането на C ++ с помощта на примери.

В C ++ масивът е променлива, която може да съхранява множество стойности от един и същи тип. Например,

Да предположим, че един клас има 27 ученика и трябва да съхраним оценките на всички тях. Вместо да създаваме 27 отделни променливи, можем просто да създадем масив:

 double grade(27);

Тук степента е масив, който може да побере максимум 27 елемента от doubleтип.

В C ++ размерът и видът на масивите не могат да се променят след декларирането му.

Декларация за масив C ++

 dataType arrayName(arraySize);

Например,

 int x(6);

Тук,

  • int - тип елемент, който да се съхранява
  • x - име на масива
  • 6 - размер на масива

Достъп до елементи в масив C ++

В C ++ всеки елемент в масив е свързан с число. Числото е известно като индекс на масив. Можем да получим достъп до елементи от масив, като използваме тези индекси.

 // syntax to access array elements array(index);

Помислете за масива x, който видяхме по-горе.

Елементи на масив в C ++

Малко неща за запомняне:

  • Индексите на масива започват с 0. Значение x (0) е първият елемент, съхраняван в индекс 0.
  • Ако размерът на масив е n, последният елемент се съхранява в индекс (n-1). В този пример x (5) е последният елемент.
  • Елементите на масив имат последователни адреси. Да предположим например, че началният адрес на x(0)е 2120d. След това адресът на следващия елемент x(1)ще бъде 2124d, адресът на x(2)ще бъде 2128d и т.н.
    Тук размерът на всеки елемент се увеличава с 4. Това е така, защото размерът на intе 4 байта.

Инициализация на масив C ++

В C ++ е възможно да се инициализира масив по време на декларация. Например,

 // declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
Елементи на масив C ++ и техните данни

Друг метод за инициализиране на масив по време на декларация:

 // declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);

Тук не сме споменали размера на масива. В такива случаи компилаторът автоматично изчислява размера.

C ++ масив с празни членове

В C ++, ако масивът има размер n, можем да съхраняваме до n брой елементи в масива. Какво обаче ще се случи, ако съхраним по-малко от n броя елементи.

Например,

 // store only 3 elements in the array int x(6) = (19, 10, 8);

Тук масивът x има размер 6. Ние обаче сме го инициализирали само с 3 елемента.

В такива случаи компилаторът присвоява произволни стойности на останалите места. Често тази произволна стойност е просто 0.

На празните членове на масива автоматично се присвоява стойността 0

Как да вмъкнете и отпечатате елементи на масив?

 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);

Пример 1: Показване на масивни елементи

 #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; )

Изход

 Числата са: 7 5 6 12 35 Числата са: 7 5 6 12 35

Тук използвахме forцикъл за итерация от i = 0до i = 4. Във всяка итерация сме отпечатали numbers(i).

Отново използвахме диапазон, базиран на цикъл, за да отпечатаме елементите на масива. За да научите повече за този цикъл, проверете C ++ Ranged за Loop.

Забележка: В нашия цикъл, базиран на диапазон, ние използвахме кода const int &nвместо int nкато декларация за диапазон. Въпреки това, това const int &nе по-предпочитано, защото:

  1. Използването int nпросто копира елементите на масива към променливата n по време на всяка итерация. Това не е ефективно за паметта.
    & n обаче използва адреса на паметта на елементите на масива за достъп до техните данни, без да ги копира в нова променлива. Това е ефективно за паметта.
  2. Ние просто отпечатваме елементите на масива, а не ги модифицираме. Следователно използваме const, за да не сменим случайно стойностите на масива.

Пример 2: Вземете входове от потребителя и ги съхранявайте в масив

 #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; )

Изход

 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:

  1. 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 and count = 0.
  2. 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.
  3. Също така увеличаваме стойността на count чрез 1всяка итерация, за да можем да получим размера на масива до края на цикъла for.
  4. След като отпечатаме всички елементи, отпечатваме сумата и средната стойност на всички числа. Средната стойност на числата се дава отaverage = sum / count;

Забележка: Използвахме forцикъла с диапазон вместо нормален forцикъл.

Нормалният forцикъл изисква от нас да зададем броя итерации, който се дава от размера на масива.

Но forверигата с обхват не изисква такива спецификации.

C ++ масив извън границите

Ако декларираме масив с размер 10, тогава масивът ще съдържа елементи от индекс 0 до 9.

Ако обаче се опитаме да осъществим достъп до елемента с индекс 10 или повече от 10, това ще доведе до недефинирано поведение.

Интересни статии...