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

45.Перечисления в языке с

Перечисление – это список именованных целых констант. Для описания перечисления используется следующий формат:

enum [имяПеречисления] {списокИменованныхКонстант};

Имя перечисления задается в том случае, если в программе требуется определять переменные этого типа. Каждая из констант может быть инициализирована. Если инициализатор не указывается, он вычисляется прибавлением единицы к значению предыдущей константы. Первая константа при отсутствии инициализации получает значение ноль. При выполнении арифметических операций именованные константы заменяются соответствующими им целыми числами. Примеры:

enum boolean {NO, YES}; // NO = 0, YES = 1

boolean bool; //описали переменную bool типа boolean, которая

//может принимать только 2 значения: NO = 0 и YES = 1

enum months {JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};

// FEB=2, MAR=3, APR=4, . . . , DEC=12

enum controls {BELL=’\a’, BACKSPACE=’\b’, NEWLINE=’\n’, RETURN=’\r’, TAB=’\t’, VTAB=’\v’};

char ch;

while(1)

{

if ((ch = getchar()) == NEWLINE) break;

. . .

}

46.Структуры в языке с, их описание и инициализация

В отличии от массива все элементы однотипны, структура может содержать элементы разных типов. Элементы структуры наз. Полями структуры и могут иметь любой тип, кроме типа этой структуры , но могут быть указателями на него . сначала структуру нужно объявить. Объявление структуры начинается с ключевого слова struct и содержит список описаний заключ. В {}

Struct point

{

Int x,y;

Chur color [20;

}

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

Объявив структуру имя , создаем новый тип данных, кот. Даже можно использовать обычным образом. (напр. Struct point R S T, с точки зрения синтаксиса аналогична записи int a, b, c; и описывает 3 переменных структурного типа с кляксами R, S, T. Одновременно можно выполнить инициализацию полей структур struct point R={50,50, “red”} , S, T= {100,100, “Green” }

Объявление структуры можно совместить с описанием переменных струк. Типа.

Struct point

{

Int x,y;

Chur color [20;

}

R={50,50, “red”}, S, T;

Более того ели кроме r,s,t нам не нужны переменные этого типа, то имя point можно опустить .

Доступ к отдельному полю структуры осущ. По средствам конструкции вида : Имя структуры. Имя поля

47.Массивы структур, их описание и инициализация

В практике программирования большое распространение получили массивы структур, т.е.массивы элементами к-ых явл. Переменные структурного типа. Например оператор: stract point mas[3]; . описывается между прочим такой массив состоящий из 3 элементов типа stract point . описание можно дополнять инициализацией. Stract point mas[3]={{10,10,”Red”}, {20,20,”Green”}, {30,30,”Blue”}}; , когда инициализаторы простые константы или строки символов и все они имеются, в наличие во внутренних скобках нет необходимости. Ввод данных в массив структур выполняется с клавы можно выполнить следующим образом.

Int I;

For (i=0; i<3; i++)

Scanf (“%d%d%s”, & mas[ I ].x, & mas[ I ].y, & mas[ I ].color );

Поскольку элементами массива явл. структуры пишем имя конкретного поля. Тоже самое с использованием механизма указателя.

Stract point *p=nas;

For (i=0; i<3; i++)

Scanf (“%d%d%s”, &(p+i) x, &(p+i) y, &(p+i) color);

Вывод данных из массива структур на экран можно выполнить следующим образом:

For (i=0; i<3; i++)

prinf (“ (%d%d) %s \n”, mas[ I ].x, mas[ I ].y, mas[ I ].color );

или

For (i=0; i<3; i++)

printf (“ (%d%d) %s \n”, (p+i) x, (p+i) y, (p+i) color);