Чим статичний масив відрізняється від динамічного?
Статичний масив і динамічний масив відрізняються тим, як і коли їм виділяється пам'ять і чи може розмір масиву змінюватися під час роботи програми.
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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.