Рядки як символьні масиви

Ефективність мови С++ багато в чому визначається наявністю в ній розвинутих засобів для обробки символьної інформації. У стандартній бібліотеці С++ передбачено багато функцій, що виконують прості дії з символьними даними. Тому ця мова най­краще підходить для системної роботи: написання компіляторів, інтерпретаторів, операційних систем, редакторів тексту тощо.

У мові С та в ранніх версіях мови С++ рядки розглядалися як символьні масиви, і вся робота з ними ґрунтувалася на ви­користанні цих масивів. Розроблена бібліотека функцій string.h містить потужні засоби для роботи з рядковими масивами. Рядок являє собою масив символів, який закінчується нуль-символом. Нагадаємо, що нуль-символ має код, що дорівнює 0, і запис у вигляді керуючої послідовності ‘\0’. За розташуван­ням нуль-символа визначається фактична довжина рядка. Кіль­кість елементів символьного масиву складається з кількості сим­волів у рядку плюс 1, тому що нуль-символ також є елементом масиву.
Для опису рядка використовуються звичайні засоби опису масивів, наприклад: char str[25];. Індексування такого масиву, як і будь-якого іншого, починається з нуля.
Символьні послідовності, розділені тільки пропусками, роз­глядаються як один рядок, тобто запис:

“Один час сегодня стоит

 двух часов завтра”

ідентичний до рядку:

“Один час сегодня стоит двух часов завтра”.

Адреса першого символа рядка може використовуватися по- різному:

  • якщо рядок застосовується при ініціюванні масиву типу char, адреса його першого елемента стає синонімом імені маси­ву. Наприклад, ідентичними є такі описи масиву:
    char st [  ] = “Слово”;
    char st [6] = “Слово”;
    char st [6] = {‘С’ ‘л’ ‘о’ ‘в’ ‘о’ ‘\0’};
  •  якщо рядок використовується для ініціювання покажчи­ка типу char*, адресапершого символа рядка буде початковим значенням покажчика, наприклад:
    char *pst = “Слово”;.

Тут описується змінна-покажчик pst, яка одержує початко­ве значення, що дорівнює адресі першого елемента (симво­ла ‘С‘);

  •  якщо рядок використовується у виразі, що застосовує покажчик, то компілятор підставляє у вираз рядка адресу його першого символа, наприклад:

char *pst;
pst = “Первый символ”;.
Тут pst одержує адресу символа «П» (тобто першого символа рядка).
Слід звернути увагу на те, що при описі символьного масиву його ім’я — не змінна, а покажчик-константа на початок рядка, тому її не можна використовувати в деяких операціях адресної арифметики. Зокрема, не можна здійснювати операцію присво­ювання вигляду:

char st [20];
st = “Петренко”; — запис неправильний, тому що не можна змінити значення st.

Виконання дій з елементами символьного масиву здійсню­ється через індекси або через покажчики. Для доступу до будь- якого символа рядка використовується індекс масиву char. Тоб­то, якщо описана змінна char str [3];, то третім елементом ма­сиву можна скористатися, записавши: str [2] або *(str+2).
У процесі роботи з елементами двовимірного масиву засто­совують або індекси масиву, або індекси покажчиків. Якщо описаний список прізвищ char spis [5] [15];, то для використан­ня символа масиву слід записати: spis [і][j] або *(spis [і] + j).
Аналогічно, якщо оголошений масив покажчиків char *str [5], що містить 5 елементів, кожний з яких вказує на рядок, то до­ступ до символа рядка можна здійснити з використанням запи­су *(str [і] + j).

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *