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

Создание простой структуры. ( тут не знаю как лучше)

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

/*Программа на С, иллюстрирующая создание структуры.

Программа запоминает информацию о вашем катере в некоторой структуре С */

#include <stdio.h>

#define iSTRING15 15

#define iSTRING20 20

#define iNULL_CHAR 1

struct stboat {

char sztype [iSTRING15 + iNULL_CHAR];

char szmodel[iSTRING15 + iNULL_CHAR];

char sztitle[iSTRING20 + iNULL_CHAR];

int iyear;

long int Imotor_hours;

float fsaleprice;

} stused_boat;

int main(void)

{

printf ("\nPlease enter the type of the boat: "); /* Введите, пожалуйста, тип катера: */

gets (stused_boat.sztype);

printf ("\nPlease enter the model of the boat: "); /* Введите, пожалуйста, модель катера: */

gets(stused_boat.szmodel);

printf("\nPlease enter the title number for the boat: "); /* Введите, пожалуйста, бортовой номер катера: */

gets(stused_boat.sztitle);

printf("\nPlease enter the model year for the boat: "); /* Введите, пожалуйста, год выпуска модели катера: */

scanf("%d",&stused_boat.iyear);

printf("\nPlease enter the current hours on "); /* Введите, пожалуйста, количество часов, отработанных двигателем катера: */

printf("the motor for the boat: ");

scanf("%d",&stused_boat.Imotor_hours);

printf("\nPlease enter the purchase price of the boat: "); /* Введите, покупную стоимость катера */

scanf("%f",&stused_boat.fsaleprice);

printf("\n\n\n");

printf("A %d %s %s with title number #%s\n", stused_boat.iyear, stused_boat.sztype,

stused_boat.szmodel,stused_boat.sztitle); /* Катер ... с бортовьм номером .*/

printf("currently has %d motor hours", stused_boat.Imotor_hours); /* в настоящий момент отработал ... часов */

printf(" and was purchased for $%8.2f\n",stused_boat.fsaleprice); /* и был куплен за ...*/

return (0);

}

Результат работы программы показывает, как информация обрабатывается в структуре:

А 1952 Chris Craft with title number #CC1011771018C

currently has 34187 motor hours and was purchased for $68132.98

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

  1. Доступ к элементам структуры. Инициализация структуры. Передача структур в функции.

Доступ к элементам структуры.

Любой элемент структуры может обрабатываться программой самостоятельно.

Для доступа к элементам структуры можно использовать:

  1. . («точка»)

  2. ->

Синтаксис операции «точка»:

stname.mname

В этой записи stname является переменной, связанной со структурным типом, а mname — это имя любой переменной-члена структуры.

Например, в С можно записать информацию в элемент szmodel при помощи следующего оператора:

gets(stused_boat.szmodel);

В этом операторе stused_boat — имя структуры, a szmodel — переменная-член структуры. Аналогичным образом для печати элемента структуры можно использовать функцию printf():

printf("%1d",stused_boat.lmotor_hours);

Доступ к элементам структуры в C++ по сути такой же:

cin >> stused_boat.sztype;

Этот оператор выполняет считывание типа катера stused_boat в символьный массив; следующий оператор выводит на экран продажную стоимость stused_boat

cout << stused_boat.fsaleprice;

Элементы структуры обрабатываются так же, как и любые другие переменные С или C++; необходимо только всегда использовать операцию "точка".

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

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