Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_новое.DOC
Скачиваний:
7
Добавлен:
28.09.2019
Размер:
486.4 Кб
Скачать

Void main(void)

{

char name[30];

printf (“Как Вас зовут ? ”);

scanf(“%s\n”,name);

printf(“Привет, %s\n”,name);

}

На запрос “Как Вас зовут ?” Вы вводите имя, например, Саша. Из 30 элементов массива будут заняты только первые 4 под имя, а пятым элементом автоматически допишется нулевой байт.

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

  1. посимвольно:

char str[11] = {‘К’,’о’,’м’,’п’,’и’,’л’,’я’,’т’,’о’,’р’,’\0’};

2) как строка символов char str[11] = “Компилятор”.

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

Допускается объявление массива символов путем указания заведомо большего размера массива:

char str[80] = “Инициализация”;

можно вообще размер не указывать:

char str[ ] = “Инициализация” .

При работе со строками символов можно не создавать массивы, если использовать указатели.

char *str = “Строка символов”; // Описание и инициализация

С данной строкой символов можно работать как с массивом:

char ch ;

ch = str[0]; // ch присваивается символ ‘С’

ch = str[5]; // ch присваивается символ ‘а’

ch = str[10]; // ch присваивается символ ‘в’

В примере 3.7 показан вывод строки символов в цикле while в функции show_string:

//Пример 3.7.

//Работа с указателем на строку, вывод строки символов

#include <stdio.h>

Void show_string(char *string)

{

while(*string) //Пока не конец строки

putchar(*string++);

}

Void main(void)

{

show_string("Строка символов +++++++++");

}

Для работы со строками в языке С предусмотрена библиотека функций (см. разд. 7.4).

Рассмотрим еще один вариант массива — двумерный (массив  одномерных массивов). Форма объявления его следующая:

тип имя[размер1][размер2];

Элементы массива в памяти располагаются последовательно построчно, то есть вначале элементы первой строки, следом второй и т.д. Количество байт в памяти определяется так:

Кол. байт = (размер типа) * (кол. строк) * (кол. столбцов).

Двумерный массив можно представить в виде таблицы (рис. 3.2, а):

int a[2][3]; первый индекс — номер строки, второй — номер столбца (две строки и три столбца). Индексация массива начинается с нуля.

Самый простой способ инициализации массива — при его объявлении указать список инициализаторов:

int m[2][3] = {7,3,2,1,0,4};

int m[2][3] = {{7,3,2,},

{1,0,4 }};

int m[3][3] = {{7,3,2},{1,0,4}};

Размещение объявленного массива в памяти показано на рис. 3.2, б. Количество инициализаторов может не совпадать с количеством элементов массива:

int m[2][3] = {7,5,1,2}; // Инициализации

int m[2][3] = {{7,5},{1,2}}. // различны

Остальные значения не определены (рис. 3.2, в). Можно объявлять массив с неизвестным количеством элементов:

int m[ ][2] = {{1,2},

{3,4},

{5,6}};

размещение показано на рис. 3.2, г.

К произвольным типам данных относятся также структуры (struct), объединения (union) и перечисления (enam). Определение, инициализация и работа со структурой показаны в примере 2.1. Остальные типы здесь не рассматриваются.

Константа — это объект, который нельзя изменять при выполнении программы. Константы могут быть именованными и неименованными. Константы могут быть любого типа, в том числе и “указатель на...”, а также типа “строка”, строковая константа заключается в кавычки (двойные):

name = “Строка символов”.

Рис. 3.2

Именованная константа — константа, которая описана и инициализирована в программе, обращение к ней с помощью идентификатора (имени), например: PI, Bolcman и т.д.

Неименованная константа — не имеет имени и используется непосредственно в тексте выражения, например 3.14; ‘A’; 1 и т.д.

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