Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
114-124!!!.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
53.35 Кб
Скачать

Создание простого объединения.

Объединения занимают память, необходимую для самого большого типа данных, хранящегося в них. Все другие типы данных в объединении используют совместно часть этой памяти или всю эту память.

  1. Вспомогательные средства. Использование typedef. Использование enum. Сложные формы данных.

Вспомогательные средства.

При правильном использовании оба средства, объявления typedef и перечисляемые типы enum, упрощают текст программы.

Использование typedef.

При помощи typedef вы можете связать новые типы данных с существующими.

. Используя typedef, можно связать эти новые типы со стандартными типами С.

В следующей программе создаются два новых типа:

/* Программа на С, иллюстрирующая использование typedef.

Создаются два новых типа, "whole" и "real",

которые можно использовать вместо "int" и "float" */

#include <stdio.h>

typedef int whole;

typedef float real;

int main(void)

{

whole wvalue=123;

real rvalue=5.6789;

/* Целое число */

printf("The whole number is %d.\n",wvalue);

/* Вещественное число */

printf("The real number is %.4f.\n",rvalue);

return (0);

}

Функцияtypedef позволяет нам создать свое собственное имя типа. Это напоминает директиву #define, но со следующими тремя изменениями:

  1. В отличие от #define функция typedef дает символические имена, но ограничивается только типами данных.

  2. Функция typedef выполняется компилятором, а не препроцессором.

  3. В своих пределах функция typedef более гибка, чем #define.

Посмотрим, как она работает. Предположим, вы хотите использовать термин real для чисел типа float. Тогда вы определяете термин real, как если бы он был переменной типа float, и перед его определением ставите ключевое слово typedef:

typedeffloatreal;

С этого момента вы можете использовать real для определения переменных:

real х, у[25], *рг;

Область действия определения переменных зависит от расположения оператора typedef. Если определение находится внутри функции, то область действия локальна и ограничена этой функцией. Если определение расположено вне функции, то область действия глобальна.

Одна из причин использования typedef заключается в создании удобных, распознаваемых имен для часто встречающихся типов.

Вторая причина: имена typedef часто используются для сложных типов

Третья причина использования typedef заключается в том, чтобы сделать программы более мобильными.

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

Сложные формы данных.

Язык Си позволяет вам создавать сложные формы данных. При создании описания мы используем имя (или «идентификатор»), которое можно изменять при помощи модификатора:

модификатор значение

* указатель

() функция

[] массив

Язык Си позволяет использовать одновременно более одного модификатора, что дает возможность создавать множество типов:

intboard[8] [8]; /* массив массивов типа int */

int **ptr; /* указатель на указатель на тип int */

int *risks[10]; /* 10-элементный массив указателей на тип int */

Для распутывания этих описаний нужно понять, в каком порядке следует применять модификаторы. Три правила помогут вам справиться с этим.

  1. Чем ближе модификатор стоит к идентификатору, тем выше его приоритет

  2. Модификаторы [] и () имеют приоритет выше, чем *.

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

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