Ноу Інти, лекція, масиви і покажчики

Рядки - додаткові відомості про тісний зв'язок між покажчиками і масивами

Рядки - це масиви знаків. За угодою, останнім знаком рядки повинен бути нульовою знак \ 0. Оскільки ім'я масиву фактично є покажчиком на перший елемент масиву. змінні типу string можуть також розглядатися, як такі, що тип char *. Наприклад, друга змінна string_array у визначенні

може розглядатися також як знаковий покажчик. Для рядка. представленою першою змінною string_pointer. пам'ять повинна бути виділена явно. З іншого боку, для масиву string_array пам'ять є покажчиком на неї. Зауважимо, що пам'ять повинна бути також виділена або зарезервована для ознаки кінця рядка \ 0.

Немає нічого незвичайного не тільки в інтерпретації змінних типу string. тобто масивів знаків як покажчиків, а й в інтерпретації рядків. які також можуть розглядатися двояко - як масиви і як покажчики - і все в одній програмі! Це особливо важливо, коли рядки передаються як аргументи функції. Зухвала програма може розглядати рядок як масив символів, а викликається, може розглядати її як знаковий покажчик. Якщо довжина рядка непостійна, то використання знакових покажчиків для рядків має певні переваги. Хоча рядки змінної довжини можуть бути також реалізовані з використанням масивів. така реалізація виявляється занадто неекономною з точки зору використання пам'яті і накладає обмеження на максимальну довжину рядка. Наприклад, для розміщення рядків різної довжини може бути створений масив знакових покажчиків. Альтернативне рішення з використанням двовимірного масиву знаків в загальному випадку буде використовувати пам'ять неефективно, так як в цьому випадку треба було б зробити число стовпців дорівнює кількості знаків в рядку найбільшою можливою довжини.

Ініціалізація масивів і класи пам'яті

Ми знаємо, що скалярні змінні можна форматувати в описі типу за допомогою таких виразів, як наприклад:

Схожі статті