Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема6.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
88.06 Кб
Скачать

Int date, code;

double money;

} mas[200], *ps;

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

struct Man

{ //описание нового типа Man

char Surname [25];

или char* Surname;

Int date, code;

double money;

}; // описание заканчивается точкой с запятой

// определение массива типа Man и указателя на тип Man:

. . .

Man mas[200], *ps;

Для инициализации структуры значения ее элементов перечисляют в фигурных скобках в порядке их описания:

struct

{

char Surname [25];

Int date, code;

double money;

} Man = {"Иванов", 26, 119, 195000.5};

При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива (учитывая, что многомерный массив - это массив массивов):

struct complex

{float Real, Im;}

compl [2][3] = {

{{1, 1}, {1, 1}, {1, 1}}, // строка 1, то есть массив compl[0]

{{2, 2}, {2, 2}, {2, 2}} // строка 2, то есть массив compl[1]

};

Доступ к полям структуры выполняется с помощью операций выбора “.” (точка) при обращении к полю через имя структуры и -> при обращении через указатель, например:

Man men, mas[200], *ps;

men.Surname = "Иванов";

mas[8].code = 119;

ps->money = 9500.55;

strcpy(men.Surname, "Иванов");

Пример:

#include <iostream.h>

#include <conio.h>

#include <windows.h>

char bufRus[256];

char* Rus(const char* text){

CharToOem(text, bufRus);

return bufRus;}

struct date

{ int day;

Int month;

Int year;

char mon_name[8];

};

date d = { 4,10,2011,"окт"};

Void main ()

{ struct date *p;

cout << Rus("\nДоступ к структуре по имени: \n");

cout << d.day << "."<< d.month <<"." << d.year;

p = &d;

d.day=14;

p->year=2010;

strcpy(p->mon_name, "янв");

cout << Rus("\nДоступ к структуре по указателю: \n");

cout << p->day << " " << Rus(p->mon_name) << " " << p->year;

getch();

}

Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора:

struct A {int a; double x;};

struct B {A a; double x;} x[2], n, *pB;

...

x[0].a.a = 1; x[0].a.x = 13.54; x[0].x = 0.1;

pB=&n;

pB->a.a=4; pB->a.x=25.454; pB->x=0.35;

Как видно из примера, поля разных структур могут иметь одинаковые имена, поскольку у них разная область видимости. Более того, можно объявлять в одной области видимости структуру и другой объект (например, переменную или массив) с одинаковыми именами, если при определении структурной переменной использовать слово struct.

#include <iostream.h>

#include <conio.h>

#include <windows.h>

char bufRus[256];

char* Rus(const char* text){

CharToOem(text, bufRus);

return bufRus;}

struct date

{ int day; // День.

char mon[8]; // Месяц.

Int year;}; // Год.

struct person

{ char fam[15]; // Фамилия

char name[10]; // Имя

char sname[15];// Отчество

date bdate;}; // Дата рождения.

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