Програмування С, С++теорія та практика (частина 1)
1.11.1 Основні відомості про представлення рядків
Символьний рядок представляє собою набір з одного або більше символів.
Приклад : "Це рядок".
В мові Сі немає спеціального типу даних, який можна було б використовувати для опису рядків. Замість цього рядки представляються у вигляді масиву елементів типу скаг. Це означає, що символи рядка розташовуються в пам’яті в сусідніх комірках, по одному символу в комірці.
|
ц |
е |
|
р |
я |
д |
о |
к |
\0 |
Рис. 1.13. Представлення рядка у вигляді масиву символів
Необхідно відмітити, що останнім елементом масиву є символ ‘\0’. Це нульовий символ (байт, кожний біт якого рівний нулю). У мові Сі він використовується для того, щоб визначати кінець рядка.
Примітка. Нульовий символ - це не цифра 0; він не виводиться на друк і в таблиці символів А8СІІ (див. додаток) має номер 0. Наявність нульового символу передбачає, що кількість комірок масиву повинна бути принаймні на одну більше, ніж число символів, які необхідно розміщувати в пам’яті. Наприклад, оголошення сЬаг з^г[10];
передбачає, що рядок містить може містити максимум 9 символів.
Основні методи ініціалізації символьних рядків.
• сЬаг з^г1[]= "АВСгіе£";
• сЬаг з£г2[] = {'А' , 'В' , 'С' , М' , 'е', '£' ,0};
• сЬаг з£г3[100]; де'Ьз (з'ЬгЗ) ;
• сЬаг з£г4[100]; зсап£("%з",з£г4);
Усі константи-рядки в тексті програми, навіть ідентично записані, розміщуються за різними адресами в статичній пам’яті. З кожним рядком пов’язується сталий покажчик на його перший символ. Власне, рядок-константа є виразом типу „покажчик на скаг” зі сталим значенням - адресою першого символу.
Так, присвоювання р=“АВС” (р - покажчик на скаг) встановлює покажчикр на символ ‘А’; значенням виразу *(“АВС”+1) є символ ‘В’.
Елементи рядків доступні через покажчики на них, тому будь-який вираз типу „покажчик на скаГ” можна вважати рядком.
Необхідно мати також на увазі те, що рядок вигляду „х” - не те ж саме, що символ ‘х’. Перша відмінність : ‘х’ - об’єкт одного з основних типів даних мови Сі (скаг), в той час, як „х” - об’єкт похідного типу (масиву елементів типу скаг). Друга різниця : „х” насправді складається з двох символів - символу ‘х’ і нуль-символу.
|
X |
|
|
X |
\0 |
|
‘х’ “х” |
Рис. 1.14. Різниця між представленням ‘х’ та “х”
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
