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

35.Структуры. Передача структур в функции.

Передача членов структур функциям

При передаче функции члена структуры передается его значение.

{

int y;

char s[10];

} mike;

Например, каким образом каждый член этой структуры передается функции:

func1(mike.y); /* передается целое значение y */

func2(mike.s); /* передается адрес строки s */

func(mike.s[2]); /* передается символьное значение s[2] */

Передача целых структур функциям

Когда в качестве аргумента функции используется структура, то для передачи целой структуры используется обычный способ вызова по значению. Это, конечно, означает, что любые изменения в содержимом параметра внутри функции не отразятся на той структуре, которая передана в качестве аргумента.

36.Структуры. Битовые поля в структурах.

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

тип имя : длина;

Пример:

struct lab {

unsigned : 4;

unsigned cts: 1;

unsigned dsr: 1;

} status;

Здесь тип означает тип битового поля, а длина — количество бит, которые занимает это поле. Тип битового поля может быть int , signed, bool и unsigned .

37.Объединения.

Объединение — это место в памяти, которое используется для хранения переменных, разных типов. Объединение дает возможность интерпретировать один и тот же набор битов не менее, чем двумя разными способами. Объявление объединения в общем виде выглядит так:

union тег {

тип имя-члена;

тип имя-члена;

.

.

} переменные-этого-объединения;

Например:

union u_type {

int i;

char ch;

};

Это объявление не создает никаких переменных. Чтобы объявить переменную, ее имя можно поместить в конце объявления или написать отдельный оператор объявления. Чтобы с помощью только что написанного кода объявить переменную-объединение, которая называется cnvt и имеет тип u_type , можно написать следующий оператор:

union u_type cnvt;

38.Перечисления.

Перечисление — это набор именованных целых констант.

Перечисление в общем виде выглядит так:

enum тег {список перечисления} список переменных;

Здесь тег и список переменных не являются обязательными. (Но хотя бы что-то одно из них должно присутствовать.) Следующий фрагмент кода определяет перечисление с именем coin (монета):

enum coin { penny, nickel, dime, quarter,half_dollar, dollar};

Тег перечисления можно использовать для объявления переменных данного перечислимого типа. Вот код, в котором money (деньги) объявляется в качестве переменной типа coin :

enum coin money;

Первый элемент перечисления имеет значение 0. Поэтому, при выполнении кода

Однако для одного или более элементов можно указать значение, используемое как инициализатор. Для этого после перечислителя надо поставить знак равенства, а затем — целое значение. Перечислителям, которые идут после инициализатора, присваиваются значения, большие предшествующего: значение 100:

enum coin { penny, nickel, dime, quarter=100,half_dollar, dollar};

вот какие значения появились у этих элементов:

penny 0

nickel 1

dime 2

quarter 100

half_dollar 101

dollar 102

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