Понятие структуры
При решении практических задач очень часто приходится сталкиваться с объектами, которые невозможно описать переменной одного типа. Для описания такого рода объектов требуется несколько переменных различного типа. Для решения этой проблемы в языке С++ используют понятие «структура» – это совокупность переменных различных типов, объединённых в одну переменную. Элементы структуры называются полями. В качестве полей структуры могут выступать скалярные величины, массивы, а также другие структуры. Таким образом, структурный тип задает внутреннее строение определяемых с его помощью структур-переменных. В отличие от массива, всегда состоящего из однотипных элементов, компоненты структуры-переменной могут быть разных типов и все должны иметь различные имена. Из определения структуры понятно, что заполнение и обработка структур производится только поэлементно – операции над структурами в языке С++ не определены, т.е. ввод-вывод элементов структуры-переменной осуществляется при помощи стандартных функций printf() и scanf(). Становится ясно, что объём оперативной памяти, которую занимает структура-переменная, будет равен суммарному объёму памяти, который занимают все элементы такой структуры.
Описание структуры производится при помощи спецификатора объявления структур: struct. Описание структуры:
struct <имя_структурного_типа>
{
<имя_типа_данных_1> <поле_1>;
<имя_типа_данных_2> <поле_2>;
…
<имя_типа_данных_N> <поле_N>;
};
Объявление структуры-переменной:
struct <имя_структурного_типа> <имя_структуры–переменной>;
Например, структура «товар» содержит поля:
название товара
закупочная цена
торговая наценка в процентах
объем партии товара
дата поступления партии товара
В соответствии со смыслом поля могут иметь любой из типов данных, допустимых в языке. Так как наименований товаров на складе может быть много, то для определения отдельных структур, содержащих сведения о конкретных товарах, нужно ввести структурный тип. Для данного примера его можно определить так:
struct tovar
{
char name[50]; // Наименование
float price ; // Цена оптовая
float percent; // Наценка в %
int vol; // 06ъем партии
char date[9] ; // Дата поставки партии
};
struct tovar tv;
В данном примере struct – спецификатор структурного типа; tovar – имя структурного типа; tv – структура-переменная.
В фигурных скобках размещаются описания элементов, которые будут входить в каждый объект типа tovar.
Для того чтобы получить доступ к полю структуры, необходимо записать имя структуры-переменной, после имени поставить точку, а затем написать имя этого поля:
gets(tv.name); // ввод с клавиатуры поля name
tv.price = 1234.56; // присваивание полю price значения 1234.56
scanf("%f",&tv.percent); // ввод с клавиатуры вещественного значения
// по адресу поля percent
Дата добавления: 2015-08-08; просмотров: 700;