Учебники

Компьютерное программирование — Массивы

Рассмотрим ситуацию, когда нам нужно хранить пять целых чисел. Если мы используем простые концепции программирования и переменные типа данных, то нам нужно пять переменных типа данных int, и программа будет выглядеть следующим образом:

Live Demo

#include <stdio.h>

int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     

   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

Это было просто, потому что мы должны были хранить только пять целых чисел. Теперь давайте предположим, что мы должны хранить 5000 целых чисел. Собираемся ли мы использовать 5000 переменных?

Для обработки таких ситуаций почти все языки программирования предоставляют концепцию, называемую массивом . Массив — это структура данных, в которой может храниться коллекция элементов одного размера с фиксированным размером. Массив используется для хранения коллекции данных, но часто более полезно думать о массиве как о коллекции переменных одного типа.

Вместо того, чтобы объявлять отдельные переменные, такие как number1, number2, …, number99, вы просто объявляете одну переменную массива number целого типа и используете number1 [0], number1 [1] и …, number1 [99] для представляют отдельные переменные. Здесь 0, 1, 2, ….. 99 — это индекс, связанный с переменной var, и они используются для представления отдельных элементов, доступных в массиве.

Все массивы состоят из смежных областей памяти. Самый низкий адрес соответствует первому элементу, а самый высокий адрес — последнему.

Массивы в Си

Создать массивы

Чтобы создать переменную массива в C, программист указывает тип элементов и количество элементов, которые будут сохранены в этом массиве. Ниже приведен простой синтаксис для создания массива в C-программировании.

type arrayName [ arraySize ];

Это называется одномерным массивом. ArraySize должен быть целочисленной константой, большей нуля, и тип может быть любым допустимым типом данных C. Например, теперь, чтобы объявить массив из 10 элементов с именем number типа int , используйте этот оператор —

int number[10];

Здесь число — это переменный массив, которого достаточно для хранения до 10 целых чисел.

Инициализация массивов

Вы можете инициализировать массив в C один за другим или использовать один оператор следующим образом:

int number[5] = {10, 20, 30, 40, 50};

Число значений в фигурных скобках {} не может быть больше, чем количество элементов, которые мы объявляем для массива в квадратных скобках [].

Если вы опустите размер массива, будет создан массив, достаточно большой, чтобы вместить инициализацию. Поэтому, если вы напишите —

int number[] = {10, 20, 30, 40, 50};

Вы создадите точно такой же массив, как и в предыдущем примере. Ниже приведен пример назначения одного элемента массива:

number[4] = 50;

Вышеприведенный оператор присваивает элементу 5-й номер в массиве со значением 50. Все массивы имеют 0 в качестве индекса их первого элемента, который также называется базовым индексом, а последний индекс массива будет общим размером массива минус. 1. На следующем рисунке показано графическое представление массива, который мы обсуждали выше.

Презентация массива

Доступ к элементам массива

Доступ к элементу осуществляется путем индексации имени массива. Это делается путем помещения индекса элемента в квадратные скобки после имени массива. Например —

int var = number[9];

Приведенный выше оператор возьмет 10-й элемент из массива и присвоит значение переменной var . В следующем примере используются все три вышеупомянутых понятия, а именно. создание, назначение и доступ к массивам —

Live Demo

#include <stdio.h>
 
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
 
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
	
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
	
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   
   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Массивы в Java

Ниже приводится эквивалентная программа, написанная на Java. Java поддерживает массивы, но есть небольшая разница в том, как они создаются в Java с помощью оператора new .

Вы можете попытаться выполнить следующую программу, чтобы увидеть выходные данные, которые должны быть идентичны результату, сгенерированному в примере C выше.

Live Demo

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      
      while( i < 10 ) {
		
         number[ i ] = i + 100;
         i = i + 1;
      }

      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

Когда вышеуказанная программа выполняется, она дает следующий результат —

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Массивы (списки) в Python

Python не имеет концепции Array, вместо этого Python предоставляет другую структуру данных, называемую list , которая обеспечивает функциональность, аналогичную массивам на любом другом языке.

Ниже приводится эквивалентная программа, написанная на Python —

Live Demo

# Following defines an empty list.
number = []
i = 0

while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1

i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

Когда вышеуказанная программа выполняется, она дает следующий результат —