Структуры данных в языке Си

Содержание пособия и его концепция.

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

Известно, что ПК оперирует физическими структурами данных, в отличие от программиста, который для решения задач пользуется логическими структурами. Далее речь пойдет о логических структурах.

Структуры данных связаны с типами данных.

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

1) Базовые типы в языке С:

char – единичный байт, который может содержать один символ.
int – целое.
float – число с плавающей точкой одинарной точности.
double – число с плавающей точкой двойной точности.

Примеры.

Язык С не является сильно типизированным языком – допускаются почти все преобразования типов.

int m;
m = 1.6 + 1.7;
m = (int) 1.6 + (int) 1.7;

2) Массив – набор переменных одного типа, имеющих одно и тоже имя.

кол-во байтов памяти массива = sizeof(базовый тип) * длина_массива

Многомерные массивы.

Массивы базовых типов. Пример.

— Массив символьных переменных.
Строка – массив символьных переменных, заканчивающийся спец. нулевым символом ‘\0’, поэтому необходимо выделить на 1 символ больше.

Пример.

3) Указатели.

int x=1, y=2, z[100];

int *p; // указатель на int, служит для хранения адреса
p=&x; // p указывает на x, т.е. хранит адрес x
y = *p; // берем содержимое p по адресу
p = z; // хранит адрес нулевого элемента
p=&z[0]; // получение адреса нулевого эл-та

Массив указателей. Пример.

4) Структуры.

Структура – совокупность переменных, объединенных под одним именем.
Объявление структуры создает шаблон, который можно использовать для создания ее объектов (экземпляров структуры).
Переменные, из которых состоит структура, называются элементами/полями.
Поля структуры связаны друг с другом по смыслу.

struct addr {
char name[30];
char street[40];
char city[20];
int zip;
};

struct addr addr_info; // addr_info является экземпляром (объектом) структуры addr

Пример учебный.
Пример из реальной системы.
Задачка.

Массив структур
struct addr addr_list[100];

Указатели на структуры
struct addr * addr_pointer;

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

Односвязный список

struct addr {
char name[30];
char street[40];
char city[20];
int zip;
struct addr *next; // ссылка на след. адрес
} info;

Пример.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *