Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
440.83 Кб
Скачать

16) Одномерные массивы. (в1б16, в3б10)

Массив – это структура однотипных элементов, занимающих непрерывную область памяти. Массив имеет имя, тип и размерность. Формат описания:

имя_типа имя [константное выражение]

Константное выражение определяет размер массива, т.е. число элементов в массиве.

Элементы массива обозначаются индексированными именами. Нижнее значение индекса – ноль.

Констант выр. м не указывать, если на этапе объявления происходит инициализация массива:

int x[] = { 1, 3, 5 };

int A[10];

или const n=10;

int A[n];

В Си нельзя определять произвольные диапазоны для индекса. Размер массива, указанный в описании, всегда на 1-цу больше максимального значения индекса.

Доступ к элементам массива производится посредством обращения к конкретному необходимому элементу массива. Например, объявлен массив из 6-ти элементов (int massive[6]), тогда его, например, 4-ым элементом является massive[4] и т.д.

Массив может быть инициализирован при объявлении. Например: int massive[6]={1,2,3,4,5,6}.

17) Строковый литерал. Чтение и запись строк. (в1б17, в2б25)

Самая простая строковая сущность (под строковой сущностью я понимаю нечто, с чем можно работать как с привычной строкой) в С — это так называемый «строковый литерал». Он представляет собой последовательность символов, заключенную в двойные кавычки.

В С работа со строками реализована путем использования одномерного массива типа char.

Символьная строка – одномерный массив типа char, заканчивающийся нулевым байтом. Нулевой байт –

байт, кождый бит которого равен 0. Для него определена символьная константа ’\0’, т.е. если

строка должна содержать n символов, то в описании массива следует указывать n+1 элемент.

Пример:

char str[11];

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

Пример:

str = "Строка";

В конце строки не ставится "\0" – это делает компилятор. При инициализации строки символов ее

можно рассматривать как одномерный массив.

char str[] = "Строка";

Можно инициализировать строку через указатель на тип char (присвоить указателю значение строковой

константы). При этом не нужно заранее выделять память для строки:

char *p;

p = "строка" или char *p = "Строка";

Чтение и запись строк

1. Функция scanf() со спецификатором ввода %s – вводит символы до первого пробельного символа.

2. Специальная библиотечная функция gets(), объявленная в файле , позволяет вводить строки,

содержащие пробелы. Ввод оканчивается нажатием клавиши Enter.

Все эти функции ввода строковых данных автоматически ставят в конец нулевой байт. В качестве

параметров в этих функциях используется имя символьного массива.

Пример:

main()

{

//объявление трехсимвольных массивов (трех строк), максимальное количество символов 9

char str1[10], str2[10], str3[10];

clrscr(); // очистка экрана

printf("Пример ввода строк разными способами");

// ввод строки с помощью функции gets

printf("Введите строку 1: ");

gets(str1);

// ввод строки с помощью функции scanf

printf("Велите строку 2: ");

scanf("%s", str2);

printf("Введите строку 3: ");

scanf("%s", str3); }

Вывод строковых данных производится функциями: printf, puts, cout. Данные функции выводят содержание символьного массива до нулевого байта. Также вывод строка можно осуществить с помощью указателя на строку, представляя строку как набор отдельных символов, связанных общим символом.

Тогда строка будет в цикле посимвольно выводиться в помощью функции putchar.

Пример:

// объявление указателя p на строку с инициализацией

char *p = "Hello! ";

/* в цикле while, пока значение указателя не равно концу строки, осуществляется посимвольный вывод строки с "передвижения" указателя на следующий символ строки*/

while (*p! = ’\0’)

putchar(*(p++));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]