Типы данных. Определение структуры и структурированных переменных

Страницы работы

Фрагмент текста работы

Типы данных

В предыдущих лекциях изучили новые типы данных языка Си:

Указатели

char* p, int* p, float* p, и т.п.

Структуры и объединения

struct name {…}, struct* name {…}, return() и т.п.

Указатель – это номер ячейки памяти, где хранится переменная описываемого типа.

Структура – это список элементов, упорядоченно располагаемых в памяти компьютера и функционально принадлежащих одной смысловой группе переменных.

struct man        // Имя структуры

{

char name[20];    //

int dd,mm,yy;    // Элементы структуры

char *address;    //

} A, B, X[10];    // Определение

// структурированных

// переменных

Определение структуры как таковой и определение структурированных переменныхмогут быть выполнены раздельно:

struct man        // Определение структуры

{

char name[20];

int dd,mm,yy;

char *address;

}

struct    man A, B; // Определение

struct    man X[10];// структурированных

// переменных

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

struct man *create();

int print(struct man *p)

Т.о., можно сделать вывод о том, что в языке Си существуют два типа данных:

базового: char x; int y; float z;

и

производного: char* x; int* y; float* z; struct name, массивы; функции;

типов.

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

Тип данных – заложенная в транслятор “идея” переменных  определенного вида, форма представления данных

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

Рассмотрим подробнее, что входит в определение типа данных.

Если программе известен тип данных, то ей известны и его характеристики:

- способ представления в памяти (способ построения из известных типов);

- возможные операции (действия);

- множество возможные значения;

-  размерность памяти, необходимой для создания переменной (sizeof).

Для чего нам ВСЁ ЭТО необходимо знать?

Во-первых – для глубинного понимания языка программирования (теоретический аспект).

Во-вторых – для грамотного планирования количества и типа данных при создании Ваших программ (в практическом применении), например для задач оптимизации кода.

Способ представления ТИПОВ ДАННЫХ в памяти (это очень важно)

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

Простой

Беззнаковые целые: unsigned. Только сектор в памяти для размещения размерности переменной.

Целые со знаком: char, int, long. Два сектора – для размещения размерности переменной и однобайтовый сектор для отрицательного представления.

С плавающей точкой: float, double. Три сектора – для размерности переменной, для отрицательного знака и представления разделителя целой и дробной частей.

Кроме того, для данных с повышенной точностью представления резервируется комплексный сектор для представления порядка числа:

идентификатор_степени.знаковый_байт.степень

Производный

Определяется способом построения типа данных из составляющих его уже известных типов (например, структура).

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

Тип данных это не просто их описание, но и набор возможных действий (в языке Си -операций) над переменными этого типа.

Это означает, что программист "знает", а транслятор "умеет выполнять" определенные в типе данных операции над любой переменной этого типа в программе.

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

Например:

операция сложения (простейшая)

числа (int, double …)

символы (char)

указатели ( * )

увеличение величины

смена символа

смена ячейки памяти

          11 –> 12                         65 – > 66 (A –> B)                   1100 –> 1104

От типа данных к переменной

От теории к практике

Тип данных – это "идея" переменной, сама переменная представляет собой "воплощение" этой идеи в памяти программы.

Процесс “воплощения” заключается в выделении (распределении) памяти для размещения переменной.

Выделенный сегмент далее всегда ассоциируется с именем переменной

Похожие материалы

Информация о работе