Урок 7.2.4. Строки символов

7.2.4. Строки символов

Как уже отмечалось ранее, символьная строка в Си есть не что иное, как массив символов, последним символом которого является нуль-символ – признак конца строки. Поэтому если нам нужно описать массив, содержащий строку, например, "строка символов", то это можно сделать обычным способом:

char mas1[]={'с','т','р','о','к','а',' ','с','и','м', 'в','о','л','о','в','\0'};

Последним элементом массива записан нуль-символ. Если его опустить, то получится обыкновенный массив символов, а не строка. Это же объявление можно сделать более коротким способом:

char mas1[]="строка символов";

или

char *mas2="строка символов";

В конце строк будет находится нуль-символ. Имя массива mas1 и указатель mas2 ссылаются на первый элемент строки. Доступ к элементам строки такой же , как и доступ к элементам массива.

Здесь следует обратить внимание на то, что mas1 является константой (адресом первого элемента строки), а mas2 – переменной, содержащей адрес первого элемента. Это предопределяет различные способы доступа к элементам массива, что уже рассматривалось ранее. Размер массива можно задавать и явно:

char mas1[16]="строка символов";

Для нуль-символа также надо зарезервировать место в массиве.

Если указать размер массива, превышающий длину строки, то неиспользованные элементы массива заполняются нуль-символами ('\0'). При обработке нескольких строк удобно организовать для их хранения массив символьных строк, например:

char m[4][11]={
"строка",
"string",
"characters",
"символы"
};

В этом случае двухмерный массив m содержит четыре символьных строки по 11 символов в каждой, включая нуль-символ. Элемент m[0][0] имеет значение символа 'c', элемент m[0][1] – значение символа 'т', элемент m[0][5] – значение символа 'a', элементы m[0][6], m[0][7], m[0][8], m[0][9] и m[0][10] имеют значение нуль-символа – '\0' и т.д.

Как уже неоднократно утверждалось, двухмерный массив можно трактовать как одномерный массив, элементами которого являются другие одномерные массивы. Таким образом, m[0] имеет смысл указателя на массив из 11 элементов, т.е. m[0] указывает на первую строку, m[1] – на вторую и т.д. Следовательно, обращаться ко всей строке массива надо при помощи соответствующих указателей, поэтому нередко имеет смысл объявить не массив строк, а массив указателей на символьные строки.

Используя указатели, массив символьных строк, рассмотренный в предыдущем примере, можно организовать следующим образом:

char *mas1[4]={
"строка",
"string",
"characters",
"символы"
};

В этом описании mas1 является массивом из 4-х указателей на символьные строки. Каждый указатель инициализируется адресом соответствующей строки, хотя в списке инициализации указаны сами строки. Адрес строки – это адрес ее первого символа.

Таким образом, указатель mas1[0] ссылается на "строка", а указатель mas1[3] – на "символы". В отличие от массива символьных строк, здесь строки не дополняются нуль-символами для достижения одинаковой длины, а занимают столько места в памяти, сколько в них символов плюс нуль-символ.

Перечень встроенных функций для обработки строк можно посмотреть здесь.

 

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов