Різниця між вказівником та масивом

Вказівник проти масиву

Покажчик - це тип даних, який містить посилання на місце пам'яті (тобто змінна вказівника зберігає адресу місця пам'яті, в якому зберігаються деякі дані). Масиви - це найбільш часто використовувана структура даних для зберігання колекції елементів. Більшість мов програмування надають способи легко оголошувати масиви та елементи доступу до масивів.

Що таке Покажчик?

Вказівник - тип даних, який зберігає адресу місця пам'яті, в якому зберігаються деякі дані. Іншими словами, вказівник містить посилання на місце пам'яті. Доступ до даних, що зберігаються в пам'яті, на яку посилається вказівник, називається перенаправленням. Під час виконання повторюваних операцій, таких як обхід дерев / рядків, пошук таблиць тощо, використання покажчиків покращить продуктивність. Це відбувається тому, що перенаправлення та копіювання покажчиків дешевше, ніж насправді копіювання та доступ до даних, вказаних покажчиками. Нульовий покажчик - це вказівник, який не вказує ні на що. У Java доступ до нульового вказівника створить виняток, який називається NullPointerException.

Що таке масив?

Показаний на малюнку 1 - це фрагмент коду, який зазвичай використовується для оголошення та призначення значень масиву. На малюнку 2 зображено, як виглядатиме масив у пам'яті.

значення int [5];

значення [0] = 100;

значення [1] = 101;

значення [2] = 102;

значення [3] = 103;

значення [4] = 104;

Малюнок 1: Код для оголошення та призначення значень масиву


100 101 102 103 104
Індекс: 0 1 2 3 4

Малюнок 2: Масив, що зберігається в пам'яті

Наведений вище код визначає масив, який може зберігати 5 цілих чисел, і до них звертаються за допомогою індексів 0 до 4. Одне важливе властивість масиву полягає в тому, що весь масив виділяється як єдиний блок пам'яті, і кожен елемент отримує власний простір у масиві . Як тільки масив визначений, його розмір фіксується. Отже, якщо ви не впевнені в розмірі масиву під час компіляції, вам доведеться визначити достатньо великий масив, щоб бути в безпечній частині. Але ми в більшості випадків використовуємо меншу кількість елементів, ніж ми виділили. Тож чималий обсяг пам’яті насправді витрачено. З іншого боку, якщо "достатньо великий масив" насправді недостатньо великий, програма вийде з ладу.

Яка різниця між вказівниками та масивами?

Вказівник - це тип даних, який зберігає адресу місця пам'яті, в якому зберігаються деякі дані, тоді як масиви є найбільш часто використовуваною структурою даних для зберігання колекції елементів. У мові програмування на C індексація масиву проводиться за допомогою арифметики вказівника (тобто i-й елемент масиву x був би еквівалентний * (x + i)). Тому в С набір покажчиків, які вказують на набір послідовних пам'яті, може розглядатися як масив. Крім того, існує різниця в тому, як оператор розміру працює на покажчики та масиви. При застосуванні до масиву оператор sizeof поверне весь розмір масиву, тоді як при застосуванні до вказівника він поверне лише розмір вказівника.