Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

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

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Определение значения символьной строки




Определить значение символьной строки можно:

· при описании символьной строки (инициализация символьной строки);

· ввести значение символьной строки с помощью функций ввода;

Инициализация – это процесс явного задания значения символьной строки в момент ее описания.

При этом в оперативной памяти необходимо зарезервировать достаточное место для хранения этой строки с учётом символа ‘\0’.

Например,

static char book[30]=“М. Уайт \“Язык Си\”.”;

По этому описанию в оперативной памяти будет выделено 30 байт непрерывного пространства, в первые 19 будут занесены 18 символов символьной строки плюс символ конца строки (нуль символ \0), автоматически добавляемый компилятором на этапе трансляции исходного модуля. Остальные, не занятые, 11 байт будут заполнены символами \0, т. к. массив описан с использованием ключевого слова static. При описании локального массива без указания static свободные ячейки могут быть заполнены любыми произвольными символами.

               

При описании и инициализации символьного массива можно не указывать его размер. Компилятор сам определит длину строки, добавит в конец символ ‘\0’, отведет под строку необходимое количество байт непрерывной оперативной памяти и поместит туда все символы.

Например,

char days[ ] = “Среда”;

В оперативной памяти компилятор сам отведет 6 байт непрерывного пространства.

Символьную строку можно инициализировать не только при описании символьного массива, но и при описании указателя типа char.

Например,

char *pstring = “Дни недели”;

Указатель pstring будет инициализирован адресом первого элемента массива типа char, содержащего символы:

Массивы строк

В информационных задачах часто необходимо запомнить отдельно несколько символьных строк, связанных друг с другом одной темой (общностью).

Для хранения списка символьных строк используется двумерный массив размером n´s, где n – максимальное количество строк (студентов в группе, инструментов в наборе), s – максимальное количество символов в строке с учетом символа окончания строки ‘\0’.

Например,

char name[25][30];

Для хранения массива name в оперативной памяти будет отведено 750 байт непрерывного пространства для хранения 25 строк длиной не более 30 символов каждая (с учетом символа окончания строки).

Инициализация двумерного массива выполняется следующим образом:

char name[25][30] = {

{“Строка 1”},

{“Строка 2”},

:

:

{“Строка n”}

};

Внешние скобки ограничивают сам массив, а совокупность внутренних скобок { и } ограничивают текст каждой строки. Учитывая, что символы “ являются ограничителями символьной строки, то вместо внутренних скобок можно использовать символы “.

Например,

char g[3][15] = {

“Иванов И. И.”,

“Антонов Л. А.”,

“Попов С. М.”,

};

Для экономии оперативной памяти и избежания переполнения выделенного пространства под строку (что приводит к потери конечных символов, в том числе символа окончания строки ‘\0’) применяют описание совокупности строк с использованием одномерного массива указателей, размер которого равен числу инициализируемых строк.

Например,

char *pg[3] = {

“Иванов И. И.”,

“Антонов Л. А.”,

“Попов С. М.”,

};

Такое описание определяет массив, где количество строк равно количеству инициализируемых строк, а количество столбцов каждой строки массива определяется количеством символов в ней плюс символ окончания строки ‘\0’.

В оперативной памяти выделяются ячейки как для хранения массива указателей, так и для хранения списка строк.Схема выделения оперативной памяти имеет вид

                                   
  pg[0] pg[1] pg[2]                          
                                   
  pg[0]                              
                                   
  И в а н о в   И .   И . \0        
                                   
  pg[1]                              
                                   
  А н т о н о в   Л .   А . \0      
                                   
  pg[2]                              
                                   
  П о п о в   С .   М . \0          
                                   
                                                                       

Компилятор выделяет три ячейки памяти для хранения элементов массива указателей pg, а также необходимое количество ячеек для хранения списка строк. Адреса каждой из строк записываются в соответствующие ячейки массива pg.

Ввод строки

Процесс ввода строки выполняется в два этапа:

· выделение оперативной памяти для хранения символьной строки;

· ввод строки с использованием функций ввода.

Выделение памяти

Перед вводом строки необходимо определить место для хранения строки, т.е. закрепить в оперативной памяти определенное количество байт, последовательно следующих друг за другом (непрерывное пространство), в котором будут размещены символы вводимой строки, включая и автоматически добавляемый при вводе символа окончания строки ‘\0’.

Проще всего явно описать размер памяти, необходимый для функции ввода, который равен максимально возможной длине вводимой строки плюс символ ее окончания ‘\0’.

Например,

char name[30];

Согласно этому оператору, будет выделено 30 байт для хранения строки длиной не более 29 символов (плюс символ \0).

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных