Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
128
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Глава 11. Структуры и указатели

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

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

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

Использование структур

В программе зачастую требуется отразить реальную ситуацию, когда некую информацию нужно организовать и обрабатывать систематически. Такая необходимость возникает в бухгалтерских системах, при решении инженерных проблем, в обучающих системах и во многих других приложениях.

В программах мы обычно представляем каждый элемент данных в виде переменной, определенной с типом float, int, char или как строка. Но в реальной жизни нам часто приходится иметь дело с объектами, которые содержат не один, а несколько типов данных. Предположим, что вы составляете каталог своих компакт-дисков. Скажем, у вас есть набор карточек, каждая из которых содержит название, описание, цену, отношение к музыкальному стилю и номер, под которым диск хранится на стеллаже (рис.11.1).

Рис. 11.1. Не компьютеризированная картотека

Вы сможете легко компьютеризировать свою картотеку, если присвоите каждый из элементов соответствующей переменной:

char name[20], description[40], category[12];

float cost;

int number;

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

Замечания по Си++

В Си++ структуры часто используют для определения классов. Классом называется структура, которая может содержать как переменные, так и функции. Определяя функцию внутри класса, ее можно связать со структурой, как, например, в этом примере:

struct square {

float number;

void assignumber(double);

float squareit(void);

} amount;

void square :: assignumber(float num)

{

number = num;

}

void square :: squareit(void)

{

float toreturn;

toreturn = number * number;

return(toreturn);

}

square.assignumber(25.0);

cout << "" << square.squareit();

Символ :: в определении функции называется оператором области видимости (по-английски — scoping) и связывает функцию с классом.

отдельный и независимый элемент, все вместе они составляют целостность, а именно, описывают один из объектов коллекции.

Если вы хотите иметь программу, которая адекватно отражала бы эту ситуацию, вам придется каким-то способом объединить данные разных типов во множество. К счастью, в языке Си и Си++ действительно существует возможность объединения данных разных типов в единое целое, представляющее собой как бы компьютерный вариант регистрационной карточки. Такая совокупность данных называется структурой.