Skip to main content

Чим статичний масив відрізняється від динамічного?

Статичний масив і динамічний масив відрізняються тим, як і коли їм виділяється пам'ять і чи може розмір масиву змінюватися під час роботи програми.


1. Статичний масив

  • Розмір задається один раз під час створення.
  • Пам'ять виділяється заздалегідь (у стеку або у фіксованій області пам'яті).
  • Змінити кількість елементів не можна - якщо потрібно більше, створюється новий масив.

Приклад (C):

c
int a[5]; // масив із 5 елементів

Якщо потрібен 6-й елемент - додати неможливо, лише пересоздати масив.

Переваги:

  • Проста структура.
  • Швидкий доступ до елементів.
  • Немає перерозподілів пам'яті.

Недоліки:

  • Не можна змінити розмір.
  • Можлива витрата зайвої пам'яті, якщо виділено "із запасом".

2. Динамічний масив

  • Розмір можна змінювати під час виконання.
  • Пам'ять виділяється у купі (heap) - за потреби.
  • При переповненні створюється новий блок пам'яті, і елементи копіюються туди.

Приклад (Python / C++):

python
arr = [1, 2, 3] arr.append(4) # додавання нового елемента

(У C++ - std::vector, у Java - ArrayList.)

Переваги:

  • Гнучкість - можна додавати і видаляти елементи.
  • Розмір зростає автоматично.

Недоліки:

  • Іноді відбувається копіювання всіх елементів при розширенні (дорого за часом).
  • Менш передбачуване використання пам'яті.

3. Візуально

Статичний:

javascript
[ ][ ][ ][ ][ ] ← фіксований розмір

Динамічний:

javascript
[ ][ ][ ] (переповнився) → створюється [ ][ ][ ][ ][ ][ ] і копіюється

Підсумок:

Статичний масив - фіксований за розміром, швидкий і простий. Динамічний - змінюваний, гнучкий, але іноді витрачає час на перерозподіл пам'яті.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.